CREATE USER (Transact-SQL)

Fügt der aktuellen Datenbank einen Benutzer hinzu. Es gibt elf Typen von Benutzern:

Benutzer mit Anmeldenamen in der master-Datenbank Die ist der häufigste Benutzertyp.

  • Benutzer mit Anmeldenamen auf Basis eines Windows-Benutzers.

  • Benutzer mit Anmeldenamen auf Basis einer Windows-Gruppe.

  • Benutzer mit Anmeldenamen unter Verwendung der SQL Server-Authentifizierung.

Benutzer mit Authentifizierung bei der Datenbank Nur in einer eigenständigen Datenbank zulässig.

  • Benutzer auf Basis eine Windows-Benutzers ohne Anmeldenamen.

  • Benutzer auf Basis einer Windows-Gruppe ohne Anmeldenamen.

  • Benutzer einer eigenständigen Datenbank mit Kennwort.

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

  • Benutzer auf Basis eines Windows-Benutzers ohne Anmeldenamen, die über die Mitgliedschaft in einer Windows-Gruppe eine Verbindung mit Database Engine (Datenbankmodul) herstellen können.

  • Benutzer auf Basis einer Windows-Gruppe ohne Anmeldenamen, die über die Mitgliedschaft in einer anderen Windows-Gruppe eine Verbindung mit Database Engine (Datenbankmodul) herstellen können.

Benutzer ohne Authentifizierungsmöglichkeit Diese Benutzer können sich nicht bei SQL Server anmelden.

  • Benutzer ohne Anmeldenamen. Können sich nicht anmelden, jedoch Berechtigungen erhalten.

  • Benutzer auf Basis eines Zertifikats. Können sich nicht anmelden, jedoch Berechtigungen erhalten und Module signieren.

  • Benutzer auf Basis eines asymmetrischen Schlüssels. Können sich nicht anmelden, jedoch Berechtigungen erhalten und Module signieren.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

Users based on logins in master
CREATE USER user_name 
    [ 
        { FOR | FROM } LOGIN login_name 
    ]
    [ WITH DEFAULT_SCHEMA = schema_name ] 
[ ; ]

Users that authenticate at the database
CREATE USER 
    {
      windows_principal [ WITH <options_list> [ ,... ] ]
    | user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ] 
    }
 [ ; ]

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 DEFAULT_SCHEMA = schema_name ] 
[ ; ]

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 
    }
 [ ; ]

<options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
    | SID = sid

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 eine gültige Anmeldung im Server sein. Dies kann ein Anmeldename auf Basis eines Windows-Prinzipals (Benutzer oder Gruppe) oder ein Anmeldename mit SQL Server-Authentifizierung sein. Wird dieser SQL Server-Anmeldename zur Anmeldung in der Datenbank verwendet, erhält er den Namen und die ID des Datenbankbenutzers, der erstellt wird. Wenn Sie einen von einem Windows-Prinzipal zugeordneten Anmeldenamen erstellen, verwenden Sie das Format [<domainName>\<loginName>]. Beispiele finden Sie unter Syntaxzusammenfassung.

  • 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. Der windows_principal kann ein Windows-Benutzer oder eine Windows-Gruppe sein. Der Benutzer wird auch dann erstellt, wenn kein Anmeldename für den windows_principal vorhanden ist. Wenn der windows_principal beim Herstellen einer Verbindung mit SQL Server nicht über einen Anmeldenamen verfügt, muss vom Windows-Prinzipal über die Mitgliedschaft in einer Windows-Gruppe mit einem Anmeldenamen eine Authentifizierung bei Database Engine (Datenbankmodul) durchgeführt werden, oder in der Verbindungszeichenfolge muss die eigenständige Datenbank als Anfangskatalog angegeben sein. Wenn Sie einen Benutzer anhand eines Windows-Prinzipals erstellen, verwenden Sie das Format [<domainName>\<loginName>]. Beispiele finden Sie unter Syntaxzusammenfassung.

  • WITH PASSWORD = 'password'
    Kann nur in einer eigenständigen Datenbank verwendet werden. Gibt das Kennwort für den Benutzer an, der erstellt wird.

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

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

  • ASYMMETRIC KEY asym_key_name
    Gibt den asymmetrischen Schlüssel an, für den der Datenbankbenutzer erstellt wird.

  • DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
    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.

    Wichtiger HinweisWichtig

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

  • SID = sid
    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 ein 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 AlwaysOn-Failover hilfreich. Fragen Sie zum Bestimmen der SID eines Benutzers sys.database_principals ab.

Hinweise

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 als bevorzugtes Schema explizit auszuwählen.) Wenn für einen Benutzer kein Standardschema bestimmt werden kann, wird das dbo-Schema 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 allen Datenbanken 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 sys.database_principals-Katalogsicht angezeigt.

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.

SicherheitshinweisSicherheitshinweis

Diese Syntax gewährt Benutzern Zugriff auf die Datenbank sowie neuen Zugriff auf Database Engine (Datenbankmodul).

  • 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 mögliche Syntaxen für Benutzer mit Zugriff auf Database Engine (Datenbankmodul) über eine Windows-Gruppe, die nicht über einen Anmeldenamen in der master-Datenbank verfügen. 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 Database Engine (Datenbankmodul) haben.

Diese Syntax ähnelt der von Benutzern eigenständiger Datenbanken auf Basis von Windows-Prinzipalen, im Unterschied dazu fehlt hier jedoch der neue Zugriff auf Database Engine (Datenbankmodul).

  • 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.

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 Database Engine (Datenbankmodul) herzustellen, damit die Datenbank leichter in eine andere Instanz von SQL Server verschoben werden kann. Weitere Informationen finden Sie unter Enthaltene Datenbank. 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 verfügen nicht über Anmeldenamen in der master-Datenbank verfügen. Administratoren von Database Engine (Datenbankmodul) sollten wissen, dass der Zugriff auf eine eigenständige Datenbank auf Datenbankebene und nicht auf der Ebene von Database Engine (Datenbankmodul) gesteuert wird. Weitere Informationen finden Sie unter Bewährte Methoden für die Sicherheit eigenständiger Datenbanken.

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';
USE AdventureWorks2012;
GO
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.

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.

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.

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.

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

Siehe auch

Verweis

sys.database_principals (Transact-SQL)

ALTER USER (Transact-SQL)

DROP USER (Transact-SQL)

CREATE LOGIN (Transact-SQL)

EVENTDATA (Transact-SQL)

Konzepte

Erstellen eines Datenbankbenutzers

Enthaltene Datenbank