Utwórz użytkownika (Transact-SQL)

Dodaje użytkownika do bieżącej bazy danych.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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

Argumenty

  • user_name
    Nazwa identyfikująca użytkownika wewnątrz tej bazy danych.user_nameis a sysname.Można go do 128 znaków.

  • IDENTYFIKATOR LOGOWANIAlogin_name
    Określa SQL Server logowania, dla którego tworzony jest użytkownik bazy danych.login_namemusi być prawidłowy identyfikator logowania na serwerze.Gdy to SQL Server logowania wprowadzi bazy danych będzie pobierał nazwę i identyfikator użytkownika bazy danych, który jest tworzony.

  • CERTYFIKATcert_name
    Określa certyfikat , dla którego tworzony jest użytkownik bazy danych.

  • KLUCZA ASYMETRYCZNEGOasym_key_name
    Określa asymetrycznego klucz , dla którego tworzony jest użytkownik bazy danych.

  • Z DEFAULT_SCHEMA **=**schema_name
    Określa pierwszy schematu, które będą przeszukiwane przez serwer podczas rozpoznaje nazwy obiektów dla tego użytkownika bazy danych.

  • BEZ LOGOWANIA
    Określa użytkownika nie powinny być mapowane do istniejącego identyfikatora logowania.

Uwagi

W przypadku pominięcia logowania dla nowego użytkownika bazy danych będzie mapowany SQL Server logowania z tej samej nazwy.

Jeśli DEFAULT_SCHEMA jest niezdefiniowana, użytkownik bazy danych będzie używał dbo jako jego schemat domyślny.DEFAULT_SCHEMA można zestaw schemat, który obecnie nie istnieje w bazie danych.DEFAULT_SCHEMA można zestaw przed utworzeniem schematu, który wskazuje.DEFAULT_SCHEMA nie można określić podczas tworzenia użytkownika mapowany do grupy systemu Windows, certyfikatlub kluczasymetrycznego.

Ważna informacjaWażne:

Wartość DEFAULT_SCHEMA jest ignorowana, jeśli użytkownik jest element członkowski sysadmin stała rola serwera.Wszyscy członkowie sysadmin stała rola serwera ma domyślny schemat z dbo.

LOGOWANIA bez klauzula tworzy użytkownik, który nie jest mapowany na logowanie do serwera SQL .Można podłączyć do innych baz danych jako guest.

Nazwy użytkowników, które są mapowane do SQL Server logowania, certyfikaty lub klucze asymetryczne nie może zawierać znaku kreski ułamkowej odwróconej (\).

Tworzenie użytkownika nie może być używane do tworzenia guest użytkownika ponieważ guest użytkownik już istnieje wewnątrz każdej bazy danych.Można włączyć guest użytkownika poprzez przyznanie jej uprawnienie POŁĄCZ, jak pokazano:

GRANT CONNECT TO guest;
GO

Informacje dotyczące użytkowników bazy danych jest widoczne w sys.database_principals katalogu widoku.

PrzestrogaPrzestroga

Począwszy od programu SQL Server 2005 zachowanie schematów zostało zmienione. Z tego powodu kod źródłowy, który traktuje schematy jak odpowiedniki użytkowników baz danych, może przestać zwracać poprawne wyniki. Starych widoków wykazu, w tym sysobjects, nie należy używać w bazie danych, w której są używane następujące instrukcje DDL: 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. W takich bazach danych należy używać nowych widoków wykazu. W nowych widokach wykazu uwzględniono rozdział podmiotów i schematów, który został wprowadzony w programie SQL Server 2005. Aby uzyskać więcej informacji dotyczących widoków wykazu, zobacz temat Widoki wykazu (Transact-SQL).

Uprawnienia

Wymaga uprawnienia zmienić dowolny użytkownik w bazie danych.

Przykłady

A.Tworzenie użytkownika bazy danych

Poniższy przykład tworzy najpierw logowania serwera o nazwie AbolrousHazem za pomocą hasła, a następnie tworzy odpowiedniego użytkownika bazy danych AbolrousHazem w AdventureWorks2008R2.

CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks2008R2;
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO 

B.Tworzenie użytkownika bazy danych z domyślnego schematu

Poniższy przykład tworzy najpierw logowania serwera o nazwie WanidaBenshoof za pomocą hasła, a następnie tworzy odpowiedniego użytkownika bazy danych Wanida, z domyślnego schematu Marketing.

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

C.Tworzenie użytkownika bazy danych z certyfikat

Poniższy przykład tworzy użytkownik bazy danych JinghaoLiu z certyfikat CarnationProduction50.

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.Tworzenie i używanie użytkownika bez identyfikatora logowania

Poniższy przykład tworzy użytkownik bazy danych CustomApp , nie mapuje się do SQL Server logowania.Przykład następnie udziela użytkownikowi adventure-works\tengiz0 uprawnienia do podszycia się pod CustomApp użytkownika.

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

Aby użyć CustomApp poświadczenia, użytkownik adventure-works\tengiz0 wykonuje następującą instrukcja.

EXECUTE AS USER = 'CustomApp' ;
GO

Aby powrócić do adventure-works\tengiz0 poświadczenia, użytkownik wykonuje następującą instrukcja.

REVERT ;
GO