CREATE USER (Transact-SQL)
Gilt für:SQL Server (alle unterstützen Versionen)
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Fügt der aktuellen Datenbank einen Benutzer hinzu. Die 13 Typen von Benutzern werden im Folgenden mit einem Beispiel der grundlegendsten Syntax aufgelistet:
Benutzer mit Anmeldeinformationen in der Masterdatenbank: dies ist der gängigste Benutzertyp.
- 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 mit einer Azure AD-Anmeldung.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Hinweis
Azure Active Directory-Serverprinzipale (Azure AD) (Anmeldungen) befinden sich derzeit in der öffentlichen Vorschau für Azure SQL-Datenbank.
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 Azure Active Directory-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 ohne Authentifizierungsmöglichkeit: Diese Benutzer können sich nicht bei SQL Server oder SQL-Datenbank anmelden.
- Benutzer ohne Anmeldenamen. Können sich nicht anmelden, jedoch Berechtigungen erhalten.
CREATE USER CustomApp WITHOUT LOGIN;
- Benutzer auf Basis eines Zertifikats. Können sich nicht anmelden, jedoch Berechtigungen erhalten und Module signieren.
CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
- Benutzer auf Basis eines asymmetrischen Schlüssels. Können sich nicht anmelden, jedoch Berechtigungen erhalten und Module signieren.
CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;
Transact-SQL-Syntaxkonventionen
Syntax
-- Syntax for SQL Server, Azure SQL Database, and 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> [ ,... ]
| Azure_Active_Directory_principal FROM EXTERNAL PROVIDER
}
[ ; ]
-- 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 Azure AD 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 ] ]
Hinweis
Der Azure AD-Administrator für Azure SQL Managed Instance-Funktionen ändert sich nach der Erstellung. Weitere Informationen finden Sie unter Neue Azure AD-Administratorfunktionen für verwaltete Instanzen.
-- Syntax for Azure Synapse Analytics
CREATE USER user_name
[ { { FOR | FROM } { LOGIN login_name }
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
CREATE USER Azure_Active_Directory_principal FROM EXTERNAL PROVIDER
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
-- Syntax for Parallel Data Warehouse
CREATE USER user_name
[ { { FOR | FROM }
{
LOGIN login_name
}
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Hinweis
Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.
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. Es kann eine Anmeldung sein, die auf einem Windows-Prinzipal (einem Benutzer oder einer Gruppe), einer Anmeldung mit der SQL Server-Authentifizierung oder einer Anmeldung mit einem Azure AD-Prinzipal (einem Benutzer, einer Gruppe oder Anwendung) basiert. 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.
'Azure_Active_Directory_principal'
Gilt für: SQL-Datenbank, Managed Instance, Azure Synapse Analytics
Gibt den Azure Active Directory-Prinzipal an, für den der Datenbankbenutzer erstellt wird. Azure_Active_Directory_principal kann ein Azure Active Directory-Benutzer, eine Azure Active Directory-Gruppe oder eine Azure Active Directory-Anwendung sein. (Azure Active Directory-Benutzer können in SQL-Datenbank nicht über Anmeldeinformationen für die Windows-Authentifizierung verfügen. Nur Datenbankbenutzer können dies tun.) Die Verbindungszeichenfolge muss die eigenständige Datenbank als den Anfangskatalog angeben.
Für Azure AD-Prinzipale erfordert die CREATE USER-Syntax:
„UserPrincipalName“ des Azure AD-Objekts für Azure AD-Benutzer.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
Azure Active Directory-Serverprinzipale (Azure AD) (Anmeldungen) führt das Erstellen von Benutzern ein, die Azure AD-Anmeldungen in der virtuellen Masterdatenbank zugeordnet sind.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Azure AD-Benutzern und -Dienstprinzipalen (Azure AD-Anwendungen), die Mitglieder von mehr als 2048 Azure AD-Sicherheitsgruppen sind, ist die Anmeldung bei der Datenbank in SQL-Datenbank, Managed Instance oder Azure Synapse nicht möglich.
„DisplayName“ des Azure AD-Objekts für Azure AD-Gruppen und Azure AD-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 Azure Active Directory-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 und höher, SQL-Datenbank.
Gibt das Zertifikat an, für das der Datenbankbenutzer erstellt wird.
ASYMMETRIC KEY asym_key_name
Gilt für: SQL Server 2008 und höher, SQL-Datenbank.
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.
Gilt nur für Benutzer mit Kennwörtern (SQL Server-Authentifizierung) in einer eigenständigen 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.
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 und Managed Instance
Legt fest, dass der Benutzer für die Azure AD-Authentifizierung geeignet ist.
Bemerkungen
Wird FOR LOGIN ausgelassen, wird der neue Datenbankbenutzer dem SQL Server-Anmeldenamen 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. Dem Benutzer ohne Anmeldung können Berechtigungen zugewiesen werden, und wenn der Sicherheitskontext in einen Benutzer ohne Anmeldung geändert wird, erhalten die ursprünglichen 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.
Die neue Syntaxerweiterung FROM EXTERNAL PROVIDER steht zum Erstellen von auf Serverebene gültigen Azure AD-Anmeldeinformationen in Azure SQL-Datenbank und Azure SQL Managed Instance zur Verfügung. Mit Azure AD-Anmeldeinformationen können Azure AD-Prinzipale auf Datenbankebene zu Azure AD-Anmeldeinformationen auf Serverebene zugeordnet werden. Verwenden Sie die folgende Syntax zum Erstellen eines Azure AD-Benutzers aus Azure AD-Anmeldeinformationen:
CREATE USER [AAD_principal] FROM LOGIN [Azure AD login]
Beim Erstellen des Benutzers in Azure SQL-Datenbank muss login_name vorhandenen Azure AD-Anmeldeinformationen entsprechen, da die Verwendung der Klausel FROM EXTERNAL PROVIDER sonst nur einen Azure AD-Benutzer ohne Anmeldeinformationen in der Masterdatenbank erstellt. Mit dem folgenden Beispielbefehl wird ein eigenständiger Benutzer erstellt:
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
Syntaxzusammenfassung
Benutzer mit Anmeldenamen in der master-Datenbank
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 auf Basis eines Windows-Prinzipals ohne Anmeldenamen in der master-Datenbank
Die folgende Liste enthält verschiedene Syntaxmöglichkeiten für Benutzer, die über eine Windows-Gruppe auf die Datenbank-Engine zugreifen können, jedoch keinen Anmeldenamen in der master-Datenbank haben. Diese Syntax kann in allen Datenbanktypen verwendet werden. Das Standardschema und die Sprachoptionen sind nicht aufgeführt.
Diese Syntax ähnelt der von Benutzern mit Anmeldenamen in der master-Datenbank; im Unterschied dazu fehlt hier jedoch der Anmeldename für die master-Datenbank. 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 enthält mögliche Syntaxen 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 ein Benutzer beim Herstellen einer Verbindung mit einer eigenständigen Datenbank nicht über einen Anmeldenamen in der master-Datenbank verfügt, muss die Verbindungszeichenfolge den Namen der eigenständigen Datenbank als Anfangskatalog beinhalten. 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).
Benutzer in einer eigenständigen Datenbank müssen nicht über Anmeldenamen in der master-Datenbank verfügen. 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 eigenständige Datenbankbenutzer in SQL-Datenbank und Azure Synapse Analytics kann SSMS Multi-Factor Authentication unterstützen. Weitere Informationen finden Sie unter SSMS-Unterstützung für Azure AD MFA mit SQL-Datenbank und Azure Synapse Analytics.
Berechtigungen
Erfordert die ALTER ANY USER-Berechtigung in der 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 AdventureWorks2012
erstellt.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
Wechseln Sie zu einer Benutzerdatenbank. Verwenden Sie zum Beispiel in SQL Server die Anweisung USE AdventureWorks2012
. 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 AdventureWorks2012;
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 und höher.
USE AdventureWorks2012;
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 AdventureWorks2012 ;
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 AdventureWorks2012 ;
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 AdventureWorks2012 ;
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 AdventureWorks2012 ;
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 Azure AD-Benutzers aus Azure AD-Anmeldeinformationen in Azure SQL
Verwenden Sie die folgende Syntax zum Erstellen eines Azure AD-Benutzers aus Azure AD-Anmeldeinformationen.
Melden Sie sich bei SQL Server oder Managed Instance mit einer Azure AD-Anmeldung an, der die Rolle sysadmin
in Managed Instance oder Rolle loginmanager
in SQL-Datenbank gewährt ist. Im Folgenden wird der Azure AD-Benutzer bob@contoso.com
mit den Anmeldeinformationen bob@contoso.com
erstellt. 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 USER mit Azure AD-Anmeldeinformationen für user_name das Gleiche wie für login_name von LOGIN an.
Das Erstellen eines Azure AD-Benutzers als Gruppe aus einer Azure AD-Anmeldung, die eine Gruppe ist, wird unterstützt.
CREATE USER [AAD group] FROM LOGIN [AAD group];
GO
Sie können einen Azure AD-Benutzer auch aus einer Azure AD-Anmeldung erstellen, die eine Gruppe ist.
CREATE USER [bob@contoso.com] FROM LOGIN [AAD group];
GO
J. Erstellen eines Azure AD-Benutzers ohne Azure AD-Anmeldeinformationen für die Datenbank
Die folgende Syntax wird zum Erstellen des Azure AD-Benutzers bob@contoso.com
in der Azure SQL Managed Instance-Datenbank verwendet (eigenständiger Benutzer):
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO
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.
Weitere Informationen
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 Azure Active Directory-Authentifizierung
Erste Schritte mit Berechtigungen für die Datenbank-Engine