CREATE USER (Transact-SQL)

Fügt der aktuellen Datenbank einen Benutzer hinzu.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

CREATE USER user_name 
    [ { { FOR | FROM }
      { 
        LOGIN login_name 
        | CERTIFICATE cert_name 
        | ASYMMETRIC KEY asym_key_name
      } 
      | WITHOUT LOGIN
    ] 
    [ WITH DEFAULT_SCHEMA = schema_name ]

Argumente

  • user_name
    Gibt den Namen an, durch den der Benutzer innerhalb dieser Datenbank identifiziert wird. user_name ist ein sysname. Der Name kann bis zu 128 Zeichen lang sein.

  • LOGIN login_name
    Gibt den SQL Server-Anmeldenamen an, für den der Datenbankbenutzer erstellt wird. login_name muss ein gültiger Anmeldename auf dem Server 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.

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

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

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

Hinweise

Wird FOR LOGIN ausgelassen, wird der neue Datenbankbenutzer dem SQL Server-Anmeldenamen mit demselben Namen zugeordnet.

Wird DEFAULT_SCHEMA nicht definiert, verwendet der Datenbankbenutzer dbo als Standardschema. DEFAULT_SCHEMA kann auf ein Schema festgelegt werden, das derzeit nicht in der Datenbank vorhanden ist. DEFAULT_SCHEMA kann vor dem Erstellen des Schemas festgelegt werden, auf das DEFAULT_SCHEMA zeigt. DEFAULT_SCHEMA kann nicht angegeben werden, wenn Sie einen Benutzer erstellen, der einer Windows-Gruppe, einem Zertifikat oder einem asymmetrischen Schlüssel zugeordnet ist.

Wichtiger HinweisWichtig

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, dem keine SQL Server-Anmeldung zugeordnet ist. Er kann als guest Verbindungen mit anderen Datenbanken herstellen.

Die Namen der Benutzer, die SQL Server-Anmeldenamen, Zertifikaten oder asymmetrischen Schlüsseln zugeordnet sind, dürfen keinen 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 sys.database_principals-Katalogsicht angezeigt.

VorsichtshinweisVorsicht

Mit SQL Server 2005 wurde das Verhalten von Schemas geändert. Deshalb werden von Code, der voraussetzt, dass Schemas und Datenbankbenutzer äquivalent sind, möglicherweise keine richtigen Ergebnisse mehr zurückgegeben. Alte Katalogsichten, einschließlich sysobjects, sollten nicht in einer Datenbank verwendet werden, in der bereits eine der folgenden DDL-Anweisungen verwendet wurde: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. In solchen Datenbanken müssen Sie stattdessen neue Katalogsichten verwenden. In den neuen Katalogsichten wird die Trennung zwischen Prinzipalen und Schemas berücksichtigt, die in SQL Server 2005 eingeführt wurde. Weitere Informationen zu Katalogsichten finden Sie unter Katalogsichten (Transact-SQL).

Berechtigungen

Erfordert die ALTER ANY USER-Berechtigung in der Datenbank.

Beispiele

A. Erstellen eines Datenbankbenutzers

Im folgenden Beispiel wird zunächst ein Serveranmeldename namens AbolrousHazem mit einem Kennwort und dann der entsprechende Datenbankbenutzer AbolrousHazem in AdventureWorks2008R2 erstellt.

CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
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 AdventureWorks2008R2;
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 AdventureWorks2008R2 ;
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