Freigeben über


CREATE USER (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL-Datenbank in Microsoft Fabric

Fügt der aktuellen Datenbank einen Benutzer hinzu. Die 13 Benutzertypen werden mit einem Beispiel für die grundlegendste Syntax aufgelistet:

Hinweis

Während Microsoft Entra-ID der neue Name für Azure Active Directory (Azure AD) ist, bleibt Azure AD in einigen fest kodierten Elementen wie Benutzeroberfläche-Feldern, Verbindungsanbietern, Fehlercodes und Cmdlets erhalten, um Störungen in bestehenden Umgebungen zu vermeiden. In diesem Artikel sind die beiden Namen austauschbar.

Benutzer basierend auf Anmeldungen in master

  • Benutzer mit Anmeldenamen auf Basis eines Windows Active Directory-Kontos. CREATE USER [Contoso\Fritz];

  • Benutzer mit Anmeldenamen auf Basis einer Windows-Gruppe. CREATE USER [Contoso\Sales];

  • Benutzer mit Anmeldenamen unter Verwendung der SQL Server-Authentifizierung. CREATE USER Mary;

  • Benutzer basierend auf einer Microsoft Entra-Anmeldung. CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]

    Hinweis

    Microsoft Entra-Serverprinzipale (Anmeldungen) befinden sich derzeit in der öffentlichen Vorschau für Azure SQL-Datenbank.

    Hinweis

    Anmeldungen und daher Benutzer, die auf Anmeldeinformationen basieren, werden in der SQL-Datenbank in Microsoft Fabric nicht unterstützt.

Benutzer, die sich in der Datenbank authentifizieren: empfohlen, um Ihre Datenbank portierbarer zu machen.
Immer in SQL-Datenbank zugelassen. Nur in einer eigenständigen Datenbank in SQL Server zugelassen.

  • Benutzer auf Basis eine Windows-Benutzers ohne Anmeldenamen. CREATE USER [Contoso\Fritz];

  • Benutzer auf Basis einer Windows-Gruppe ohne Anmeldenamen. CREATE USER [Contoso\Sales];

  • Benutzer in SQL-Datenbank oder Azure Synapse Analytics basierend auf einem Microsoft Entra-Benutzer. CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;

  • Benutzer einer eigenständigen Datenbank mit Kennwort. (Nicht in Azure Synapse Analytics verfügbar.) CREATE USER Mary WITH PASSWORD = '********';

Benutzer auf Basis von Windows-Prinzipalen, die eine Verbindung über Windows-Gruppenanmeldenamen herstellen

  • Benutzer auf Basis eines Windows-Benutzers ohne Anmeldenamen, die über die Mitgliedschaft in einer Windows-Gruppe eine Verbindung mit Datenbank-Engine herstellen können. CREATE USER [Contoso\Fritz];

  • Benutzer auf Basis einer Windows-Gruppe ohne Anmeldenamen, die über die Mitgliedschaft in einer anderen Windows-Gruppe eine Verbindung mit Datenbank-Engine herstellen können. CREATE USER [Contoso\Fritz];

Benutzer, die sich nicht authentifizieren können – Diese Benutzer können sich nicht bei SQL Server oder SQL-Datenbank anmelden.

  • Benutzer ohne Anmeldenamen. Die Anmeldung ist nicht möglich, kann aber Berechtigungen erteilt werden. CREATE USER CustomApp WITHOUT LOGIN;
  • Benutzer auf Basis eines Zertifikats. Die Anmeldung ist nicht möglich, kann aber Berechtigungen erteilt werden und Module signieren. CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
  • Benutzer auf Basis eines asymmetrischen Schlüssels. Die Anmeldung ist nicht möglich, kann aber Berechtigungen erteilt werden und Module signieren. CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;

Transact-SQL-Syntaxkonventionen

Syntax

Syntax für SQL Server, Azure SQL-Datenbank und Azure SQL Managed Instance

-- Syntax Users based on logins in master  
CREATE USER user_name   
    [   
        { FOR | FROM } LOGIN login_name   
    ]  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  
  
-- Users that authenticate at the database  
CREATE USER   
    {  
      windows_principal [ WITH <options_list> [ ,... ] ]  
  
    | user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ]   
    | Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    }  
  
 [ ; ]  
  
-- Users based on Windows principals that connect through Windows group logins  
CREATE USER   
    {   
          windows_principal [ { FOR | FROM } LOGIN windows_principal ]  
        | user_name { FOR | FROM } LOGIN windows_principal  
}  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  
  
-- Users that cannot authenticate   
CREATE USER user_name   
    {  
         WITHOUT LOGIN [ WITH <limited_options_list> [ ,... ] ]  
       | { FOR | FROM } CERTIFICATE cert_name   
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name   
    }  
 [ ; ]  
  
<options_list> ::=  
      DEFAULT_SCHEMA = schema_name  
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }  
    | SID = sid   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  
  
<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name ]   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  
  
-- SQL Database syntax when connected to a federation member  
CREATE USER user_name  
[;]

-- Syntax for users based on Microsoft Entra logins for Azure SQL Managed Instance
CREATE USER user_name   
    [   { FOR | FROM } LOGIN login_name  ]  
    | FROM EXTERNAL PROVIDER
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  


<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name 
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ] 

Syntax für Azure Synapse Analytics

CREATE USER user_name   
    [ { { FOR | FROM } { LOGIN login_name }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]

CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER  
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]

Syntax für SQL-Datenbank in Microsoft Fabric

CREATE USER   
    {  
    Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ ,... ] ]    
    | Microsoft_Entra_principal WITH <options_list> [ ,... ] 
    }  
 [ ; ]  
  
-- Users that cannot authenticate   
CREATE USER user_name   
    {    WITHOUT LOGIN [ WITH DEFAULT_SCHEMA = schema_name ]  
       | { FOR | FROM } CERTIFICATE cert_name   
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name   
    }  
 [ ; ]  
  
<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name  
    | OBJECT_ID = 'objectid'

<options_list> ::=  
      DEFAULT_SCHEMA = schema_name  
    | SID = sid  
    | TYPE = { X | E }

Syntax für Parallel Data Warehouse

CREATE USER user_name   
    [ { { FOR | FROM }  
      {   
        LOGIN login_name   
      }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]  

Argumente

user_name

Gibt den Namen an, mit dem der Benutzer innerhalb dieser Datenbank identifiziert wird. user_name ist vom Datentyp sysname. Der Name kann bis zu 128 Zeichen lang sein. Wenn Sie einen Benutzer auf Basis eines Windows-Prinzipals erstellen, wird der Prinzipalname von Windows als Benutzername verwendet, es sei denn, ein abweichender Benutzername wird angegeben.

LOGIN login_name

Gibt die Anmeldung an, für die der Datenbankbenutzer erstellt wird. login_name muss ein gültiger Anmeldename im Server sein. Kann eine Anmeldung basierend auf einem Windows-Prinzipal (Benutzer oder Gruppe), einer Anmeldung mit SQL Server-Authentifizierung oder einer Anmeldung mit einem Microsoft Entra-Prinzipal (Benutzer, Gruppe oder Anwendung) sein. Wird diese SQL Server-Anmeldung in die Datenbank eingetragen, erhält sie den Namen und die ID des Datenbankbenutzers, der erstellt wird. Verwenden Sie das Format [<domainName>\<loginName>], wenn Sie einen von einem Windows-Prinzipal zugeordneten Anmeldenamen erstellen. Beispiele finden Sie unter Syntaxzusammenfassung.

Wenn CREATE USER die einzige Anweisung in einem SQL-Batch ist, unterstützt Azure SQL-Datenbank die WITH LOGIN-Klausel. Wenn CREATE USER nicht die einzige Anweisung in einem SQL-Batch ist oder in dynamischem SQL-Code ausgeführt wird, wird die WITH LOGIN-Klausel nicht unterstützt.

WITH DEFAULT_SCHEMA = schema_name

Gibt das erste Schema an, das vom Server beim Auflösen der Namen von Objekten für diesen Datenbankbenutzer durchsucht wird.

'windows_principal'

Gibt den Windows-Prinzipal an, für den der Datenbankbenutzer erstellt wird. windows_principal kann ein Windows-Benutzer oder eine Windows-Gruppe sein. Der Benutzer wird auch dann erstellt, wenn kein Anmeldename für windows_principal vorhanden ist. Wenn der windows_principal beim Herstellen einer Verbindung mit SQL Server über keinen Anmeldenamen verfügt, muss der Windows-Prinzipal sich über die Mitgliedschaft in einer Windows-Gruppe mit einem Anmeldenamen bei der Datenbank-Engine authentifizieren, oder die eigenständige Datenbank muss in der Verbindungszeichenfolge als Anfangskatalog angegeben sein. Verwenden Sie das Format [<domainName>\<loginName>], wenn Sie einen Benutzer aus einem Windows-Prinzipal erstellen. Beispiele finden Sie unter Syntaxzusammenfassung. Benutzer auf Grundlage von Active Directory-Benutzern sind auf Namen mit weniger als 21 Zeichen beschränkt.

"Microsoft_Entra_principal"

Gilt für: SQL-Datenbank, SQL verwaltete Instanz, Azure Synapse Analytics, SQL-Datenbank in Microsoft Fabric

Gibt den Microsoft Entra-Prinzipal an, für den der Datenbankbenutzer erstellt wird. Die Microsoft_Entra_principal kann ein Microsoft Entra-Benutzer, eine Microsoft Entra-Gruppe oder eine Microsoft Entra-Anwendung sein. (Microsoft Entra-Benutzer können keine Windows-Authentifizierungsanmeldungen in SQL-Datenbank haben; nur Datenbankbenutzer.) Die Verbindungszeichenfolge muss die enthaltene Datenbank als ursprünglichen Katalog angeben.

Für Microsoft Entra-Prinzipale erfordert die CREATE USER-Syntax Folgendes:

  • UserPrincipalName des Microsoft Entra-Objekts für Microsoft Entra-Benutzer.

    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • Microsoft Entra-Serverprinzipale (Anmeldungen) führen das Erstellen von Benutzern ein, die Microsoft Entra-Anmeldungen in der virtuellen master Datenbank zugeordnet sind. Beispiel: CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];

  • Microsoft Entra-Benutzer und Dienstprinzipale (Anwendungen), die Mitglieder von mehr als 2048 Microsoft Entra-Sicherheitsgruppen sind, werden nicht unterstützt, um sich bei Datenbanken in Azure SQL-Datenbank, Azure SQL verwaltete Instanz oder Azure Synapse anzumelden.

  • DisplayName des Microsoft Entra-Objekts für Microsoft Entra-Gruppen und Microsoft Entra-Anwendungen. Für die fiktive Sicherheitsgruppe Nurses verwenden Sie also Folgendes:

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

Weitere Informationen finden Sie unter Herstellen einer Verbindung mit SQL-Datenbank unter Verwendung der Microsoft Entra-Authentifizierung.

WITH PASSWORD = 'password'

Gilt für: SQL Server 2012 (11.x) und höher, SQL-Datenbank.

Kann nur in einer eigenständigen Datenbank verwendet werden. Gibt das Kennwort für den Benutzer an, der erstellt wird. Ab SQL Server 2012 (11.x) werden gespeicherte Kennwortinformationen mithilfe der SHA-512-Komponente des mit Salt verschlüsselten Kennworts berechnet.

WITHOUT LOGIN

Gibt an, dass der Benutzer keinem vorhandenen Anmeldenamen zugeordnet werden sollte.

CERTIFICATE cert_name

Gilt für: SQL Server 2008 (10.0.x) und höher, SQL-Datenbank, SQL-Datenbank in Microsoft Fabric

Gibt das Zertifikat an, für das der Datenbankbenutzer erstellt wird.

ASYMMETRIC KEY asym_key_name

Gilt für: SQL Server 2008 (10.0.x) und höher, SQL-Datenbank, SQL-Datenbank in Microsoft Fabric

Gibt den asymmetrischen Schlüssel an, für den der Datenbankbenutzer erstellt wird.

DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language salias> }

Gilt für: SQL Server 2012 (11.x) und höher, SQL-Datenbank

Gibt die Standardsprache für den neuen Benutzer an. Wenn eine Standardsprache für den Benutzer angegeben und die Standardsprache der Datenbank später geändert wird, hat dies keine Auswirkungen auf die Standardsprache des Benutzers. Wenn keine Standardsprache angegeben wird, entspricht die Standardsprache des Benutzers der Standardsprache der Datenbank. Wenn die Standardsprache des Benutzers nicht angegeben und die Standardsprache der Datenbank später geändert wird, wird die Standardsprache des Benutzers in die neue Standardsprache der Datenbank geändert.

Wichtig

DEFAULT_LANGUAGE wird nur für Benutzer von eigenständigen Datenbanken verwendet.

SID = sid

Gilt für: SQL Server 2012 (11.x) und höher sowie für SQL-Datenbank in Microsoft Fabric.

In SQL Server 2012 (11.x) und höher gilt nur für Benutzer mit Kennwörtern (SQL Server-Authentifizierung) in einer enthaltenen Datenbank. Gibt die SID des neuen Datenbankbenutzers an. Wenn diese Option nicht ausgewählt wird, wird von SQL Server automatisch eine SID zugewiesen. Erstellen Sie mit dem SID-Parameter Benutzer in mehreren Datenbanken, die die gleiche Identität (SID) aufweisen. Dies ist beim Erstellen von Benutzern in mehreren Datenbanken für die Vorbereitung eines Always On-Failovers hilfreich. Fragen Sie zum Bestimmen der SID eines Benutzers sys.database_principals ab.

In der SQL-Datenbank in Microsoft Fabric sid sollte es sich um eine gültige ID des angegebenen Microsoft Entra-Prinzipals handeln. Wenn der Prinzipal ein Benutzer oder eine Gruppe ist, sollte die ID eine Microsoft Entra-Objekt-ID des Benutzers/der Gruppe sein. Wenn der Microsoft Entra-Prinzipal ein Dienstprinzipal (eine Anwendung oder eine verwaltete Identität) ist, sollte die ID eine Anwendungs-ID (oder eine Client-ID) sein. Die angegebene ID muss ein binary(16) Wert sein. Die Datenbank-Engine überprüft die angegebene ID in Microsoft Entra nicht. Die SID Argumente müssen zusammen mit TYPE.

TYPE = [ E | X ]

Gilt für: SQL-Datenbank in Microsoft Fabric.

Gibt den Typ eines Microsoft Entra-Prinzipals an. E gibt an, dass der Prinzipal ein Benutzer oder ein Dienstprinzipal (eine Anwendung oder eine verwaltete Identität) ist. X gibt an, dass der Prinzipal eine Gruppe ist.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ON | OFF]

Gilt für: SQL Server 2016 (13.x) und höher, SQL-Datenbank.

Verhindert bei Massenkopiervorgängen kryptografische Metadatenüberprüfungen auf dem Server. Dadurch kann der Benutzer durch Massenkopiervorgänge Daten zwischen Tabellen oder Datenbanken austauschen, ohne dabei die Daten zu verschlüsseln. Der Standardwert ist OFF.

Warnung

Die falsche Verwendung dieser Option kann zur Datenbeschädigung führen. Weitere Informationen finden Sie unter Migrieren von durch Always Encrypted geschützten sensiblen Daten.

FROM EXTERNAL PROVIDER

Gilt für: SQL-Datenbank, Azure SQL verwaltete Instanz, SQL-Datenbank in Microsoft Fabric

Gibt an, dass der Prinzipal für die Microsoft Entra-Authentifizierung gilt. SQL Server überprüft automatisch den bereitgestellten Prinzipalnamen in Microsoft Entra.

Wenn der Prinzipal, der die CREATE USER Anweisung ausgibt, ein Microsoft Entra-Benutzerprinzipal ist, muss sich der Prinzipal (oder die Gruppe des Prinzipals) in der Rolle "Verzeichnisleser" in Microsoft Entra befinden.

Wenn es CREATE USER sich bei SQL-Datenbank und Azure SQL verwaltete Instanz um einen Dienstprinzipal handelt, muss sich die Identität des Datenbankservers oder der verwalteten Instanz in der Rolle "Verzeichnisleser" in Microsoft Entra befinden.

In der SQL-Datenbank in Microsoft Fabric ist dies nicht zulässig, FROM EXTERNAL PROVIDER wenn es sich bei einem Prinzipal um CREATE USER einen Dienstprinzipal in Microsoft Entra handelt. Dienstprinzipale müssen Benutzer für Microsoft Entra-Prinzipale verwenden TYPE und SID festlegen.

WITH OBJECT_ID = 'objectid'

Gilt für: SQL-Datenbank, Azure SQL verwaltete Instanz, SQL-Datenbank in Microsoft Fabric

Gibt die Microsoft Entra-Objekt-ID an. Wenn dies OBJECT_ID angegeben ist, kann die user_name ein benutzerdefinierter Alias sein, der aus dem ursprünglichen Prinzipalanzeigenamen mit einem angefügten Suffix gebildet wurde. Die user_name muss ein eindeutiger Name in der sys.database_principals Ansicht sein und alle anderen sysname Einschränkungen einhalten. Weitere Informationen zur Verwendung der WITH OBJECT_ID Option finden Sie unter Microsoft Entra-Anmeldungen und Benutzer mit nicht eindeutigen Anzeigenamen.

Hinweis

Wenn der Anzeigename des Dienstprinzipals kein Duplikat ist, sollte die standardmäßige Anweisung CREATE LOGIN oder CREATE USER verwendet werden. Bei der WITH OBJECT_ID Erweiterung handelt es sich um ein Problembehandlungsreparaturelement, das für die Verwendung mit Nicht-Dienstprinzipalen implementiert wird. Die Verwendung mit einem eindeutigen Dienstprinzipal wird nicht empfohlen. Die Verwendung der WITH OBJECT_ID-Erweiterung für einen Dienstprinzipal ohne Hinzufügen eines Suffixes wird erfolgreich ausgeführt, aber es ist nicht offensichtlich, für welchen Dienstprinzipal die Anmeldung oder der Benutzer erstellt wurde. Es wird empfohlen, einen Alias mit einem Suffix zu erstellen, um den Dienstprinzipal eindeutig zu identifizieren. Die WITH OBJECT_ID-Erweiterung wird für SQL Server nicht unterstützt.

Hinweise

Wenn FOR LOGIN nicht angegeben, wird der neue Datenbankbenutzer der SQL Server-Anmeldung mit demselben Namen zugeordnet.

Das Standardschema ist das erste Schema, das vom Server beim Auflösen der Namen von Objekten für diesen Datenbankbenutzer durchsucht wird. Wenn nicht anders angegeben, ist das Standardschema der Besitzer von Objekten, die von diesem Datenbankbenutzer erstellt werden.

Wenn der Benutzer ein Standardschema hat, wird dieses Standardschema verwendet. Wenn der Benutzer kein Standardschema hat, aber Mitglied einer Gruppe mit einem Standardschema ist, wird das Standardschema der Gruppe verwendet. Wenn der Benutzer kein Standardschema hat und Mitglied von mehreren Gruppen ist, ist das Standardschema für den Benutzer das Schema der Windows-Gruppe mit der niedrigsten principal_id und explizit festgelegt. (Es ist nicht möglich, eines der verfügbaren Standardschemas explizit als bevorzugtes Schema auszuwählen.) Wenn für einen Benutzer kein Standardschema bestimmt werden kann, wird das Schema dbo verwendet.

DEFAULT_SCHEMA kann vor dem Erstellen des Schemas, auf das DEFAULT_SCHEMA zeigt, festgelegt werden.

DEFAULT_SCHEMA kann nicht angegeben werden, wenn Sie einen Benutzer erstellen, der einem Zertifikat oder einem asymmetrischen Schlüssel zugeordnet ist.

Der Wert von DEFAULT_SCHEMA wird ignoriert, wenn der Benutzer ein Mitglied der festen Serverrolle sysadmin ist. Alle Mitglieder der festen Serverrolle sysadmin verfügen über das Standardschema dbo.

Durch die WITHOUT LOGIN-Klausel wird ein Benutzer erstellt, der keiner SQL Server-Anmeldung zugeordnet ist. Er kann als guest Verbindungen mit anderen Datenbanken herstellen. Diesem Benutzer können Berechtigungen ohne Anmeldung zugewiesen werden, und wenn der Sicherheitskontext ohne Anmeldung in einen Benutzer geändert wird, erhält der ursprüngliche Benutzer die Berechtigungen des Benutzers ohne Anmeldung. Siehe Beispiel D: Erstellen und Verwenden eines Benutzers ohne Anmeldename.

Nur Benutzernamen, die Windows-Prinzipalen zugeordnet sind, können den umgekehrten Schrägstrich ( \ ) enthalten.

Mithilfe von CREATE USER kann kein guest-Benutzer erstellt werden, da der guest-Benutzer bereits in jeder Datenbank vorhanden ist. Sie können den guest-Benutzer durch Erteilen der CONNECT-Berechtigung aktivieren (siehe Beispiel):

GRANT CONNECT TO guest; 
GO  

Informationen zu Datenbankbenutzern werden in der Katalogsicht sys.database_principals angezeigt.

Verwenden Sie die SyntaxerweiterungFROM EXTERNAL PROVIDER, um Microsoft Entra-Anmeldungen auf Serverebene in Azure SQL-Datenbank und Azure SQL verwaltete Instanz zu erstellen. Microsoft Entra-Anmeldungen ermöglichen die Zuordnung von Microsoft Entra-Prinzipale auf Datenbankebene zu Microsoft Entra-Anmeldungen auf Serverebene. Verwenden Sie die folgende Syntax, um einen Microsoft Entra-Benutzer aus einer Microsoft Entra-Anmeldung zu erstellen:

CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];

Beim Erstellen des Benutzers in der Azure SQL-Datenbank muss die login_name einer vorhandenen Microsoft Entra-Anmeldung entsprechen. Andernfalls erstellt die FROM EXTERNAL PROVIDER-Klausel nur einen Microsoft Entra-Benutzer ohne Anmeldung in der master Datenbank. Mit dem folgenden Beispielbefehl wird ein eigenständiger Benutzer erstellt:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;

Syntaxzusammenfassung

Benutzer basierend auf Anmeldungen in master

Die folgende Liste enthält mögliche Syntaxen für Benutzer auf Basis von Anmeldenamen. Die Standardschemaoptionen sind nicht aufgeführt.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN

Benutzer mit Authentifizierung bei der Datenbank

Die folgende Liste enthält mögliche Syntaxen für Benutzer, die nur in einer eigenständigen Datenbank verwendet werden können. Die erstellten Benutzer weisen keine Beziehung zu Anmeldenamen in der master-Datenbank auf. Das Standardschema und die Sprachoptionen sind nicht aufgeführt.

Wichtig

Diese Syntax gewährt Benutzern Zugriff auf die Datenbank sowie neuen Zugriff auf Datenbank-Engine.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'

Benutzer, die auf Windows-Prinzipale ohne Anmeldungen in der master Systemdatenbank basieren

Die folgende Liste zeigt mögliche Syntax für Benutzer, die über eine Windows-Gruppe Zugriff auf die Datenbank-Engine haben, aber keine Anmeldung in der master Systemdatenbank haben. Diese Syntax kann in allen Datenbanktypen verwendet werden. Das Standardschema und die Sprachoptionen sind nicht aufgeführt.

Diese Syntax ähnelt Benutzern, die auf Anmeldungen masterbasieren, aber diese Benutzerkategorie hat keine Anmeldung master. Der Benutzer muss über den Anmeldenamen einer Windows-Gruppe Zugriff auf Datenbank-Engine haben.

Diese Syntax ähnelt der von Benutzern eigenständiger Datenbanken, die auf Windows-Prinzipalen basiert. Im Unterschied dazu erhalten Benutzer hier jedoch keinen neuen Zugriff auf die Datenbank-Engine.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]

Benutzer ohne Authentifizierungsmöglichkeit

Die folgende Liste zeigt mögliche Syntax für Benutzer, die sich nicht bei SQL Server anmelden können.

  • CREATE USER RIGHTSHOLDER WITHOUT LOGIN
  • CREATE USER CERTUSER FOR CERTIFICATE SpecialCert
  • CREATE USER CERTUSER FROM CERTIFICATE SpecialCert
  • CREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKey
  • CREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey

Sicherheit

Wenn Sie einen Benutzer erstellen, erhält dieser zwar Zugriff auf eine Datenbank, nicht jedoch notwendigerweise auch auf die darin enthaltenen Objekte. Nach dem Erstellen eines Benutzers wird dieser daher häufig einer oder mehreren Datenbankrollen hinzugefügt, die über Zugriffsberechtigungen für entsprechende Objekte verfügen, oder dem Benutzer werden Berechtigungen für einzelne Objekte erteilt. Informationen zum Entwerfen eines Berechtigungssystems finden Sie unter Getting Started with Database Engine Permissions.

Spezielle Überlegungen zu eigenständigen Datenbanken

Wenn der Benutzer keine Anmeldung in der master Datenbank hat, muss beim Herstellen einer Verbindung mit einer enthaltenen Datenbank der Verbindungszeichenfolge den enthaltenen Datenbanknamen als Ursprünglicher Katalog enthalten. Der Anfangskatalogparameter ist für Benutzer von eigenständigen Datenbanken mit Kennwort stets erforderlich.

In einer eigenständigen Datenbank hilft das Erstellen von Benutzern, eine Trennung zwischen der Datenbank und der Instanz von Datenbank-Engine herzustellen, damit die Datenbank leichter in eine andere Instanz von SQL Server verschoben werden kann. Weitere Informationen finden Sie unter Eigenständige Datenbanken und Eigenständige Datenbankbenutzer – machen Sie Ihre Datenbank portabel. Informationen zum Ändern eines Datenbankbenutzers von einem Benutzer mit Anmeldenamen auf Basis einer SQL Server-Authentifizierung in den Benutzer einer eigenständigen Datenbank mit Kennwort finden Sie unter sp_migrate_user_to_contained (Transact-SQL).

In einer enthaltenen Datenbank müssen Benutzer keine Anmeldungen in der master Datenbank haben. Administratoren von Datenbank-Engine sollten wissen, dass der Zugriff auf eine eigenständige Datenbank auf Datenbankebene und nicht auf der Ebene von Datenbank-Engine gesteuert wird. Weitere Informationen finden Sie unter Security Best Practices with Contained Databases.

Bei Verwendung der in Datenbanken enthaltenen Benutzern auf Azure SQL-Datenbank konfigurieren Sie den Zugriff mithilfe einer Firewallregel auf Datenbankebene, anstatt einer Firewallregel auf Serverebene. Weitere Informationen finden Sie unter sp_set_database_firewall_rule (Azure SQL-Datenbank).

Für SQL Server 2022 (16.x), SQL-Datenbank, Azure SQL Managed Instance und Azure Synapse Analytics enthaltene Datenbankbenutzer unterstützt SSMS die mehrstufige Authentifizierung. Weitere Informationen finden Sie unter Verwenden der Multi-Faktor-Authentifizierung von Microsoft Entra.

Berechtigungen

Erfordert die ALTER ANY USER-Berechtigung in der Datenbank.

Berechtigungen für SQL Server 2022 und höher

Erfordert CREATE USER-Berechtigung für die Datenbank.

Beispiele

A. Erstellen eines Datenbankbenutzers auf Basis einer SQL Server-Anmeldung

Im folgenden Beispiel wird zunächst der SQL Server-Anmeldename AbolrousHazem und anschließend der zugehörige Datenbankbenutzer AbolrousHazem in AdventureWorks2022 erstellt.

CREATE LOGIN AbolrousHazem   
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';  

Wechseln Sie zu einer Benutzerdatenbank. Verwenden Sie zum Beispiel in SQL Server die Anweisung USE AdventureWorks2022. In Azure Synapse Analytics und Analytics-Plattformsystem (PDW) müssen Sie eine neue Verbindung zur Benutzerdatenbank herstellen.

CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;  
GO   

B. Erstellen eines Datenbankbenutzers mit einem Standardschema

Im folgenden Beispiel wird zunächst ein Serveranmeldename namens WanidaBenshoof mit einem Kennwort und dann der entsprechende Datenbankbenutzer Wanida mit dem Standardschema Marketing erstellt.

CREATE LOGIN WanidaBenshoof   
    WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';  
USE AdventureWorks2022;  
CREATE USER Wanida FOR LOGIN WanidaBenshoof   
    WITH DEFAULT_SCHEMA = Marketing;  
GO  

C. Erstellen eines Datenbankbenutzers über ein Zertifikat

Im folgenden Beispiel wird der Datenbankbenutzer JinghaoLiu über das CarnationProduction50-Zertifikat erstellt.

Gilt für: SQL Server 2008 (10.0.x) und höher

USE AdventureWorks2022;  
CREATE CERTIFICATE CarnationProduction50  
    WITH SUBJECT = 'Carnation Production Facility Supervisors',  
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;  
GO   

D: Erstellen und Verwenden eines Benutzers ohne Anmeldename

Im folgenden Beispiel wird ein CustomApp-Datenbankbenutzer erstellt, dem kein SQL Server-Anmeldename zugeordnet wird. Anschließend wird einem Benutzer die adventure-works\tengiz0-Berechtigung zugewiesen, um die Identität des CustomApp-Benutzers anzunehmen.

USE AdventureWorks2022;  
CREATE USER CustomApp WITHOUT LOGIN ;  
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;  
GO   

Zur Verwendung der CustomApp-Anmeldeinformationen führt der adventure-works\tengiz0-Benutzer die folgende Anweisung aus.

EXECUTE AS USER = 'CustomApp' ;  
GO  

Zur Wiederherstellung der adventure-works\tengiz0-Anmeldeinformationen führt der Benutzer die folgende Anweisung aus.

REVERT ;  
GO  

E. Erstellen eines Benutzers einer eigenständigen Datenbank mit Kennwort

Im folgenden Beispiel wird der Benutzer einer eigenständigen Datenbank mit Kennwort erstellt. Dieses Beispiel kann nur in einer eigenständigen Datenbank ausgeführt werden.

Gilt für: SQL Server 2012 (11.x) und höher. Dieses Beispiel funktioniert in SQL-Datenbank, wenn DEFAULT_LANGUAGE entfernt wird.

USE AdventureWorks2022;  
GO  
CREATE USER Carlo  
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'  
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F. Erstellen eines Benutzers einer eigenständigen Datenbank für eine Domänenanmeldung

Im folgenden Beispiel wird ein Benutzer für eine eigenständige Datenbank mit dem Anmeldenamen „Fritz“ in der Domäne „Contoso“ erstellt. Dieses Beispiel kann nur in einer eigenständigen Datenbank ausgeführt werden.

Gilt für: SQL Server 2012 (11.x) und höher.

USE AdventureWorks2022;  
GO  
CREATE USER [Contoso\Fritz] ;  
GO   

G. Erstellen eines Benutzers einer eigenständigen Datenbank mit einer bestimmten SID

Im folgenden Beispiel wird ein authentifizierter SQL Server-Benutzer einer eigenständigen Datenbank mit dem Namen CarmenW erstellt. Dieses Beispiel kann nur in einer eigenständigen Datenbank ausgeführt werden.

Gilt für: SQL Server 2012 (11.x) und höher.

USE AdventureWorks2022;  
GO  
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;

H. Erstellen eines Benutzers zum Kopieren von verschlüsselten Daten

Im folgenden Beispiel wird ein Benutzer erstellt, der durch das Feature „Always Encrypted“ geschützte Daten aus einem Tabellensatz mit verschlüsselten Spalten in einen anderen Tabellensatz mit verschlüsselten Spalten kopieren kann (innerhalb derselben oder zu einer anderen Datenbank). Weitere Informationen finden Sie unter Migrieren von durch Always Encrypted geschützten sensiblen Daten.

Gilt für: SQL Server 2016 (13.x) und höher, SQL-Datenbank.

CREATE USER [Chin]   
WITH   
      DEFAULT_SCHEMA = dbo  
    , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;  

I. Erstellen eines Microsoft Entra-Benutzers aus einer Microsoft Entra-Anmeldung in Azure SQL

Verwenden Sie die folgende Syntax, um einen Microsoft Entra-Benutzer aus einer Microsoft Entra-Anmeldung zu erstellen.

Melden Sie sich bei Ihrem logischen Server in Azure oder SQL verwaltete Instanz mithilfe einer Microsoft Entra-Anmeldung an, die die sysadmin Rolle in SQL verwaltete Instanz oder loginmanager rolle in SQL-Datenbank gewährt hat. Das folgende T-SQL-Skript erstellt einen Microsoft Entra-Benutzer bob@contoso.comaus der Anmeldung bob@contoso.com. Diese Anmeldeinformationen wurde im CREATE LOGIN-Beispiel erstellt.

CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO

Wichtig

Geben Sie beim Erstellen eines BENUTZERS aus einer Microsoft Entra-Anmeldung die user_name mit demselben login_name aus LOGIN an.

Das Erstellen eines Microsoft Entra-Benutzers als Gruppe aus einer Microsoft Entra-Anmeldung, die eine Gruppe ist, wird unterstützt.

CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];

GO

Sie können auch einen Microsoft Entra-Benutzer aus einer Microsoft Entra-Anmeldung erstellen, die eine Gruppe ist.

CREATE USER [bob@contoso.com] FROM LOGIN [MS Entra group];

GO

J. Erstellen eines enthaltenen Datenbankbenutzers aus einem Microsoft Entra-Prinzipal

Die folgende Syntax erstellt einen Microsoft Entra-Benutzer bob@contoso.comin einer Datenbank ohne zugeordnete Anmeldung master. Die Datenbank-Engine überprüft, ob der angegebene Benutzer in Microsoft Entra vorhanden ist.

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO

K. Erstellen eines enthaltenen Datenbankbenutzers aus einem Microsoft Entra-Prinzipal ohne Überprüfung

Gilt für: SQL-Datenbank in Microsoft Fabric

In den Beispielen in diesem Abschnitt werden Datenbankbenutzer für Microsoft Entra-Prinzipale erstellt, ohne prinzipale Namen in Microsoft Entra zu überprüfen.

Im folgenden T-SQL-Beispiel wird ein Datenbankbenutzer für den Microsoft Entra-Benutzer namens erstellt bob@contoso.com. Ersetzen Sie <unique identifier sid> die SID des neuen Benutzers durch die Objekt-ID des Microsoft Entra-Benutzers.

DECLARE @principal_name SYSNAME = 'bob@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);

Im folgenden Beispiel wird ein Datenbankbenutzer für den Microsoft Entra-Dienstprinzipal namens erstellt HRApp. Ersetzen Sie die <unique identifier sid> SID des neuen Benutzers durch die Client-ID des Dienstprinzipals in Microsoft Entra.

DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);

Im folgenden Beispiel wird ein Datenbankbenutzer für die Microsoft Entra-Gruppe namens erstellt HR. Ersetzen Sie die <unique identifier sid> SID des neuen Benutzers durch die Objekt-ID der Gruppe.

DECLARE @group_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);

Nächste Schritte

Ziehen Sie in Betracht, den Benutzer mithilfe der Anweisung ALTER ROLE einer Datenbankrolle hinzuzufügen, sobald dieser erstellt wurde.
Möglicherweise möchten Sie der Rolle GRANT-Objektberechtigungen zuweisen, damit sie auf Tabellen zugreifen können. Allgemeine Informationen über das Sicherheitsmodell von SQL Server finden Sie unter Berechtigungen.