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 master
basieren, 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.com
aus 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.com
in 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.
Zugehöriger Inhalt
- Erstellen eines Datenbankbenutzers
- sys.database_principals (Transact-SQL)
- ALTER USER (Transact-SQL)
- DROP USER (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- EVENTDATA (Transact-SQL)
- Eigenständige Datenbanken
- Herstellen einer Verbindung mit SQL-Datenbank unter Verwendung der Microsoft Entra-Authentifizierung
- Erste Schritte mit Berechtigungen für die Datenbank-Engine