CREATE USER (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database w usłudze Microsoft Fabric

Dodaje użytkownika do bieżącej bazy danych. Poniższa lista przedstawia 13 typów użytkowników wraz z przykładem najbardziej podstawowej składni:

Note

Chociaż identyfikator Entra firmy Microsoft to nowa nazwa usługi Azure Active Directory (Azure AD), aby zapobiec zakłócaniu działania istniejących środowisk, usługa Azure AD nadal pozostaje w niektórych zakodowanych na stałe elementach, takich jak pola interfejsu użytkownika, dostawcy połączeń, kody błędów i polecenia cmdlet. W tym artykule dwie nazwy są wymienne.

Użytkownicy na podstawie logowań w master

  • Użytkownik oparty na logowaniu na podstawie konta usługi Active Directory systemu Windows. CREATE USER [Contoso\test];

  • Użytkownik oparty na logowaniu w oparciu o grupę systemu Windows. CREATE USER [Contoso\Sales];

  • Użytkownik na podstawie logowania korzystającego z uwierzytelniania SQL Server. CREATE USER Mary;

  • Użytkownik oparty na logowaniu firmy Microsoft Entra. CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com]

    Note

    podmioty zabezpieczeń serwera firmy Microsoft (identyfikatory logowania) są obecnie dostępne w publicznej wersji zapoznawczej dla usługi Azure SQL Database.

    Note

    Baza danych SQL w Microsoft Fabric nie obsługuje logowania ani użytkowników na podstawie logowań.

Użytkownicy uwierzytelniający się w bazie danych – Korzystaj z użytkowników zamkniętych, aby uczynić bazę bardziej mobilną.
Always allowed in Azure SQL Database. Dozwolone tylko w zawartej bazie danych w programie SQL Server.

  • Użytkownik oparty na użytkowniku systemu Windows, który nie ma identyfikatora logowania. CREATE USER [Contoso\test];

  • Użytkownik oparty na grupie systemu Windows, która nie ma identyfikatora logowania. CREATE USER [Contoso\Sales];

  • Użytkownik w usłudze SQL Database lub Azure Synapse Analytics oparty na użytkowniku firmy Microsoft Entra. CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;

  • Użytkownik zawartej bazy danych z hasłem. (Niedostępne w usłudze Azure Synapse Analytics). CREATE USER Mary WITH PASSWORD = '********';

użytkownicy na podstawie podmiotów zabezpieczeń systemu Windows łączących się za pośrednictwem logowań grup systemu Windows

  • Użytkownik oparty na użytkowniku systemu Windows, który nie ma logowania, ale może nawiązać połączenie z aparatem bazy danych za pośrednictwem członkostwa w grupie systemu Windows. CREATE USER [Contoso\test];

  • Użytkownik oparty na grupie systemu Windows, która nie ma identyfikatora logowania, ale może nawiązać połączenie z aparatem bazy danych za pośrednictwem członkostwa w innej grupie systemu Windows. CREATE USER [Contoso\test];

Użytkownicy, którzy nie mogą uwierzytelniać — ci użytkownicy nie mogą logować się do programu SQL Server ani usługi SQL Database.

  • Użytkownik bez logowania. Nie można się zalogować, ale można udzielić uprawnień. CREATE USER CustomApp WITHOUT LOGIN;
  • Użytkownik oparty na certyfikacie. Nie można się zalogować, ale można udzielić uprawnień i może podpisywać moduły. CREATE USER TestProcess FOR CERTIFICATE Contoso50;
  • Użytkownik oparty na kluczu asymetrycznym. Nie można się zalogować, ale można udzielić uprawnień i może podpisywać moduły. CREATE User TestProcess FROM ASYMMETRIC KEY Contoso09;

Transact-SQL konwencje składni

Syntax

Składnia dla programu SQL Server, usługi Azure SQL Database i usługi 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 ] ]

Składnia dla usługi 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 for SQL database in Microsoft Fabric i Azure SQL Database

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 }

Arguments

user_name

Określa nazwę, za pomocą której użytkownik jest identyfikowany w tej bazie danych. user_name jest nazwą systemu . Może zawierać maksymalnie 128 znaków. Podczas tworzenia użytkownika na podstawie podmiotu zabezpieczeń systemu Windows główna nazwa systemu Windows staje się nazwą użytkownika, chyba że zostanie określona inna nazwa użytkownika.

LOGIN login_name

Określa identyfikator logowania, dla którego jest tworzony użytkownik bazy danych. login_name musi być prawidłowym identyfikatorem logowania na serwerze. Może być identyfikatorem logowania na podstawie podmiotu zabezpieczeń systemu Windows (użytkownika lub grupy), logowania przy użyciu uwierzytelniania programu SQL Server lub nazwy logowania przy użyciu podmiotu zabezpieczeń firmy Microsoft (użytkownika, grupy lub aplikacji). Po wprowadzeniu tego identyfikatora logowania programu SQL Server baza danych uzyskuje nazwę i identyfikator tworzonego użytkownika bazy danych. Podczas tworzenia identyfikatora logowania mapowanego na podstawie podmiotu zabezpieczeń systemu Windows użyj formatu [<domainName>\<loginName>]. Aby zapoznać się z przykładami, zobacz Składnia — podsumowanie.

Jeśli CREATE USER to zalecenie jest jedynym w partii SQL, Azure SQL Database obsługuje klauzulę WITHLOGIN. Jeśli CREATE USER instrukcja nie jest jedyną w partii SQL lub działa w dynamicznym SQL, klauzula WITH LOGIN nie jest obsługiwana.

Z DEFAULT_SCHEMA = schema_name

Określa pierwszy schemat przeszukany przez serwer podczas rozpoznawania nazw obiektów dla tego użytkownika bazy danych.

'windows_principal'

Określa podmiot zabezpieczeń systemu Windows, dla którego jest tworzony użytkownik bazy danych. windows_principal może być użytkownikiem systemu Windows lub grupą systemu Windows. Użytkownik zostanie utworzony, nawet jeśli windows_principal nie ma identyfikatora logowania. W przypadku nawiązywania połączenia z programem SQL Server, jeśli windows_principal nie ma identyfikatora logowania, podmiot zabezpieczeń systemu Windows musi uwierzytelniać się w a aparatze bazy danych za pomocą członkostwa w grupie systemu Windows, która ma identyfikator logowania, lub parametry połączenia muszą określić zawartą bazę danych jako katalog początkowy. Podczas tworzenia użytkownika na podstawie podmiotu zabezpieczeń systemu Windows użyj formatu [<domainName>\<loginName>]. Aby zapoznać się z przykładami, zobacz Składnia — podsumowanie. Użytkownicy korzystający z usługi Active Directory są ograniczeni do nazw mniejszych niż 21 znaków.

'Microsoft_Entra_principal'

Dotyczy do: SQL Server 2022 (16.x) i nowszych wersji, SQL Database, SQL Managed Instance, Azure Synapse Analytics, bazy danych SQL w Microsoft Fabric

Określa podmiot zabezpieczeń firmy Microsoft, dla którego jest tworzony użytkownik bazy danych. Microsoft_Entra_principal może być użytkownikiem firmy Microsoft Entra, grupą Microsoft Entra lub aplikacją Firmy Microsoft Entra. (Użytkownicy firmy Microsoft Entra nie mogą logować się do uwierzytelniania systemu Windows w usłudze SQL Database; tylko użytkownicy bazy danych). Parametry połączenia muszą określać zawartą bazę danych jako początkowy wykaz.

Dla zasad CREATE USER Microsoft Entra składnia wymaga:

  • UserPrincipalName obiektu Microsoft Entra dla użytkowników firmy Microsoft Entra.

    • CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • Microsoft Entra server principals (logins) wprowadza tworzenie użytkowników mapowanych na identyfikatory logowania firmy Microsoft Entra w master bazie danych. Na przykład CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];

  • Użytkownicy i jednostki usługi firmy Microsoft Entra (aplikacje), które są członkami ponad 2048 grup zabezpieczeń firmy Microsoft Entra, nie są obsługiwane w celu logowania się do baz danych w usłudze Azure SQL Database, azure SQL Managed Instance lub Azure Synapse.

  • DisplayName obiektu Entra firmy Microsoft dla grup Entra firmy Microsoft i aplikacji Microsoft Entra. Jeśli masz pielęgniarki grupy zabezpieczeń, należy użyć:

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

Aby uzyskać więcej informacji, zobacz Connecting to SQL Database By Using Microsoft Entra authentication.

Aby uzyskać więcej informacji na temat uwierzytelniania entra firmy Microsoft w programie SQL Server, zobacz Samouczek: konfigurowanie uwierzytelniania entra firmy Microsoft dla programu SQL Server włączonego przez usługę Azure Arc.

Z HASŁEM = 'hasło'

Dotyczy do: SQL Server 2012 (11.x) i nowszych wersji, SQL Database.

Można jej używać tylko w zawartej bazie danych. Określa hasło tworzonego użytkownika.

Począwszy od SQL Server 2012 (11.x), SQL Server i Azure SQL Database używały hasha SHA-512 połączonego z 32-bitową losową i unikalną solą. Ta metoda uczyniła ją statystycznie niewykonalną dla osób atakujących w celu wyłudzenia haseł.

Program SQL Server 2025 (17.x) wprowadza algorytm iteracji skrótu, RFC2898, znany również jako funkcja wyprowadzania kluczy opartych na hasłach (PBKDF). Ten algorytm nadal używa algorytmu SHA-512, ale skróty hasła wielokrotnie (100 000 iteracji), znacznie spowalniając ataki siłowe. Ta zmiana zwiększa ochronę haseł w odpowiedzi na zmieniające się zagrożenia bezpieczeństwa i pomaga klientom przestrzegać wytycznych NIST SP 800-63b. To ulepszenie zabezpieczeń korzysta z silniejszego algorytmu tworzenia skrótów, co może nieco zwiększyć czas logowania do logowania uwierzytelniania SQL. Wpływ jest na ogół niższy w środowiskach z buforowaniem połączeń, ale może być bardziej zauważalny w scenariuszach bez buforowania lub gdy opóźnienie logowania jest ściśle monitorowane.

BEZ LOGIN

Określa, że użytkownik nie powinien być mapowany na istniejące dane logowania.

CERTIFICATE cert_name

Dotyczy do: SQL Server 2008 (10.0.x) i nowszych wersji, bazy danych SQL oraz bazy danych SQL w Microsoft Fabric

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

ASYMMETRIC KEY asym_key_name

Dotyczy do: SQL Server 2008 (10.0.x) i nowszych wersji, bazy danych SQL oraz bazy danych SQL w Microsoft Fabric

Określa klucz asymetryczny, dla którego jest tworzony użytkownik bazy danych.

DEFAULT_LANGUAGE = { NONE | <lcid> | <nazwa języka> | salias języka <> }

Dotyczy do: SQL Server 2012 (11.x) i nowszych wersji, SQL Database

Określa język domyślny dla nowego użytkownika. Jeśli określisz domyślny język użytkownika, a później zmienisz domyślny język bazy danych, domyślny język użytkownika pozostaje zgodnie z określonymi. Jeśli nie określisz domyślnego języka, użytkownik otrzymuje domyślny język bazy danych. Jeśli nie określisz domyślnego języka dla użytkownika, a później zmienisz domyślny język bazy danych, domyślny język użytkownika zmienia się na nowy domyślny język bazy.

Important

DEFAULT_LANGUAGE jest używana tylko dla użytkownika zawartej bazy danych.

SID = sid

Dotyczy do: SQL Server 2012 (11.x) i nowszych wersji, a także do bazy danych SQL w Microsoft Fabric.

W SQL Server 2012 (11.x) i późniejszych wersjach obowiązuje tylko użytkowników posiadających hasła (uwierzytelnianie SQL Server) w zamkniętej bazie danych. Określa identyfikator SID nowego użytkownika bazy danych. Jeśli nie wybierzesz tej opcji, SQL Server automatycznie przypisze SID. Użyj parametru SID, aby utworzyć użytkowników w wielu bazach danych, które mają tę samą tożsamość (SID). Ta funkcja jest przydatna przy tworzeniu użytkowników w wielu bazach danych, aby przygotować się na awaryjne ustawienie Always On. Aby określić SID użytkownika, należy zapytać sys.database_principals.

W bazie danych SQL w usłudze Microsoft Fabric sid powinien być prawidłowym identyfikatorem określonego podmiotu zabezpieczeń firmy Microsoft. Jeśli podmiotem jest użytkownik lub grupa, ID powinien być identyfikatorem obiektu Microsoft Entra użytkownika lub grupy. Jeśli Microsoft Entra principal jest podmiotem usługowym (aplikacją lub tożsamością zarządzaną), identyfikator powinien być identyfikatorem aplikacji lub klientem. Określony identyfikator musi być wartością binary(16). Aparat bazy danych nie weryfikuje określonego identyfikatora w usłudze Microsoft Entra. Jeśli użyjesz argumentu SID , musisz uwzględnić TYPE.

TYPE = [ E | X ]

Dotyczy: baza danych SQL w usłudze Microsoft Fabric i usłudze Azure SQL Database.

Określa typ podmiotu zabezpieczeń firmy Microsoft. E wskazuje, że jednostka jest użytkownikiem lub jednostką usługi (aplikacją lub tożsamością zarządzaną). X wskazuje, że podmiot zabezpieczeń jest grupą.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | WYŁĄCZONE ]

Dotyczy do: SQL Server 2016 (13.x) oraz nowszych wersji, SQL Database.

Pomija sprawdzanie metadanych kryptograficznych na serwerze w operacjach kopiowania zbiorczego. Dzięki temu użytkownik może zbiorczo kopiować zaszyfrowane dane między tabelami lub bazami danych bez odszyfrowywania danych. Wartość domyślna to WYŁĄCZONE.

Warning

Niewłaściwe użycie tej opcji może prowadzić do uszkodzenia danych. Aby uzyskać więcej informacji, zobacz Migrate Sensitive Data Protected by Always Encrypted.

OD ZEWNĘTRZNEGO DOSTAWCY

Dotyczy do: SQL Server 2022 (16.x) i nowszych wersji, SQL Database, Azure SQL Managed Instance, bazy danych SQL w Microsoft Fabric

Określa, że podmiot zabezpieczeń dotyczy uwierzytelniania firmy Microsoft Entra. Program SQL Server automatycznie weryfikuje podaną nazwę główną w usłudze Microsoft Entra.

Jeśli podmiotem wydającym oświadczenie CREATE USER jest użytkownik Microsoft Entra, to podmiot lub jego grupa musi pełnić rolę Directory Readers w Microsoft Entra.

W usługach SQL Database i Azure SQL Managed Instance, jeśli podmiotem wystawiającym instrukcję jest jednostka usługi, tożsamość serwera bazy danych lub wystąpienie zarządzane musi znajdować się w roli czytelników katalogów w usłudze Microsoft Entra.

W bazie danych SQL w Microsoft Fabric nie możesz użyćFROM EXTERNAL PROVIDER, jeśli głównym wydawcą CREATE USER jest zasada usługowa w Microsoft Entra. Jednostki usług muszą używać argumentów TYPE i SID, aby utworzyć użytkowników dla podmiotów zabezpieczeń firmy Microsoft.

WITH OBJECT_ID = "objectid"

Dotyczy do: SQL Server 2025 (17.x) i nowszych wersji, SQL Database, Azure SQL Managed Instance, bazy danych SQL w Microsoft Fabric

Określa identyfikator obiektu Entra firmy Microsoft. Jeśli określisz , OBJECT_IDmoże to user_name być alias zdefiniowany przez użytkownika utworzony z oryginalnej głównej nazwy wyświetlanej z dołączonym sufiksem. User_name musi być unikatową nazwą w widoku sys.database_principals i przestrzegać wszystkich innych ograniczeń sysname. Więcej informacji o korzystaniu z tej WITH OBJECT_ID opcji można znaleźć w artykule Microsoft Entra logins oraz użytkowników z nieunikalnymi nazwami wyświetlanymi.

Note

Począwszy od SQL Server 2025 (17.x), opcja ta WITH OBJECT_ID jest obsługiwana dla logowania do Microsoft Entra oraz użytkowników z unikalnymi nazwami wyświetlanymi.

Jeśli nazwa wyświetlana zasady usługi nie jest duplikatem, użyj domyślnej CREATE LOGIN instrukcji lub CREATE USER instrukcji. Rozszerzenie WITH OBJECT_ID to element naprawy rozwiązywania problemów zaimplementowany do użytku z jednostkami usługi bez jednostki usługi. Używanie jej z unikatową jednostką usługi nie jest zalecane. WITH OBJECT_ID Użycie rozszerzenia dla jednostki usługi bez pomyślnego dodania sufiksu, ale nie jest oczywiste, dla której jednostki usługi utworzono nazwę logowania lub użytkownika. Zaleca się stworzenie aliasu za pomocą sufiksu w celu jednoznacznej identyfikacji podmiotu usługi.

Remarks

Jeśli pominiesz FOR LOGIN, nowy użytkownik bazy danych przypisuje się logowaniu do SQL Server o tej samej nazwie.

Domyślny schemat to pierwszy schemat, którego serwer szuka podczas rozwiązywania nazw obiektów dla użytkownika bazy danych. O ile nie określono inaczej, domyślny schemat jest właścicielem obiektów utworzonych przez tego użytkownika bazy danych.

Jeśli użytkownik ma domyślny schemat, serwer używa go takiego. Jeśli użytkownik nie ma domyślnego schematu, ale jest członkiem grupy z domyślnym schematem, serwer korzysta z domyślnego schematu grupy. Jeśli użytkownik nie ma domyślnego schematu i należy do wielu grup, serwer korzysta z skonfigurowanego domyślnego schematu grupy Windows z najniższym principal_id spośród grup z wyraźnie ustalonym schematem domyślnym. Nie możesz wyraźnie wybrać jednego z dostępnych domyślnych schematów jako preferowany. Jeśli serwer nie jest w stanie określić domyślnego schematu dla użytkownika, korzysta ze schematu dbo .

Możesz ustawić DEFAULT_SCHEMA przed utworzeniem schematu, do którego wskazuje.

Nie możesz określić przy DEFAULT_SCHEMA tworzeniu użytkownika przypisanego do certyfikatu lub klucza asymetrycznego.

Serwer ignoruje wartość DEFAULT_SCHEMA , jeśli użytkownik jest członkiem stałej sysadmin roli serwera. Wszystkie osoby stałej sysadmin roli serwera mają domyślny schemat .dbo

Klauzula tworzy WITHOUT LOGIN użytkownika, który nie jest przypisany do logowania uwierzytelnionego przez SQL. Może łączyć się z innymi bazami danych jako gość. Możesz przypisać temu użytkownikowi uprawnienia bez logowania. Gdy kontekst bezpieczeństwa zmienia się na użytkownika bez logowania, oryginalny użytkownik otrzymuje uprawnienia użytkownika bez logowania. Dla przykładu zobacz D. Tworzenie i używanie użytkownika bez logowania.

Tylko użytkownicy mapowane na podmioty zabezpieczeń systemu Windows mogą zawierać znak ukośnika odwrotnego (\).

Nie możesz użyć do CREATE USER utworzenia użytkownika gościa, ponieważ użytkownik gościnny już istnieje w każdej bazie danych. Możesz umożliwić użytkownika gościa, nadając CONNECT mu uprawnienia, jak pokazano:

GRANT CONNECT TO guest; 
GO  

Możesz zobaczyć informacje o użytkownikach baz danych w widoku katalogu sys.database_principals .

Użyj rozszerzenia składni FROM EXTERNAL PROVIDER, aby utworzyć identyfikatory logowania microsoft entra na poziomie serwera w usłudze Azure SQL Database i usłudze Azure SQL Managed Instance. Korzystając z logowania Microsoft Entra, możesz mapować zasady Microsoft Entra na poziomie bazy danych na serwerowe logowania Microsoft Entra. Aby utworzyć użytkownika Microsoft Entra z logowania Microsoft Entra, użyj następującej składni:

CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];

Gdy tworzysz użytkownika w Azure SQL bazie danych, login_name musi odpowiadać istniejącemu logowaniu Microsoft Entra. W przeciwnym razie użycie klauzuli FROM EXTERNAL PROVIDER tworzy tylko użytkownika Microsoft Entra bez logowania w bazie master danych. Na przykład następujące polecenie tworzy zamkniętego użytkownika:

CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;

Podsumowanie składni

Użytkownicy na podstawie logowań w master

Poniższa lista zawiera możliwą składnię dla użytkowników na podstawie identyfikatorów logowania. Domyślne opcje schematu nie są wyświetlane.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • 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

użytkownicy uwierzytelnieni w bazie danych

Na poniższej liście przedstawiono możliwą składnię dla użytkowników, którzy mogą być używane tylko w zawartej bazie danych. Utworzone przez użytkowników nie będą powiązane z żadnymi identyfikatorami logowania w bazie danych master. Domyślne opcje schematu i języka nie są wyświetlane.

Important

Ta składnia udziela użytkownikom dostępu do bazy danych, a także udziela nowego dostępu do aparatu bazy danych.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Test WITH PASSWORD = '<strong password>'

Użytkownicy na podstawie podmiotów zabezpieczeń systemu Windows bez logowań w bazie danych systemu master

Poniższa lista zawiera możliwą składnię dla użytkowników, którzy mają dostęp do aparatu bazy danych za pośrednictwem grupy systemu Windows, ale nie mają identyfikatora logowania w bazie danych systemu master. Ta składnia może być używana we wszystkich typach baz danych. Domyślne opcje schematu i języka nie są wyświetlane.

Ta składnia jest podobna do użytkowników na podstawie logowań w master, ale ta kategoria użytkownika nie ma identyfikatora logowania w master. Użytkownik musi mieć dostęp do aparatu bazy danych za pośrednictwem logowania grupy systemu Windows.

Ta składnia jest podobna do zawartych użytkowników bazy danych w oparciu o podmioty zabezpieczeń systemu Windows, ale ta kategoria użytkownika nie uzyskuje nowego dostępu do aparatu bazy danych.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]

użytkownicy, którzy nie mogą uwierzytelnić

Poniższa lista zawiera możliwą składnię dla użytkowników, którzy nie mogą zalogować się do programu SQL Server.

  • 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

Zabezpieczenia

Utworzenie użytkownika udziela dostępu do bazy danych, ale nie udziela automatycznie dostępu do obiektów w bazie danych. Po utworzeniu użytkownika typowe akcje to dodawanie użytkowników do ról bazy danych, które mają uprawnienia dostępu do obiektów bazy danych lub udzielanie użytkownikowi uprawnień do obiektów bazy danych. Aby uzyskać informacje na temat projektowania systemu uprawnień, zobacz Wprowadzenie do uprawnień aparatu bazy danych.

Szczególne uwagi dotyczące zawartych baz danych

W przypadku nawiązywania połączenia z zawartą bazą danych, jeśli użytkownik nie ma identyfikatora logowania w bazie danych master, parametry połączenia muszą zawierać nazwę zawartej bazy danych jako katalog początkowy. Początkowy parametr wykazu jest zawsze wymagany dla użytkownika zawartej bazy danych z hasłem.

W zawartej bazie danych tworzenie użytkowników ułatwia oddzielenie bazy danych od wystąpienia aparatu bazy danych, dzięki czemu baza danych może być łatwo przeniesiona do innego wystąpienia programu SQL Server. Aby uzyskać więcej informacji, zobacz zawarte bazy danych i użytkowników zawartej bazy danych — tworzenie przenośnej bazy danych. Aby zmienić użytkownika bazy danych z użytkownika opartego na uwierzytelnionym logowaniu SQL na użytkownika z zawartą bazą danych z hasłem, zobacz sp_migrate_user_to_contained (Transact-SQL).

W zawartej bazie danych użytkownicy nie muszą mieć identyfikatorów logowania w bazie danych master. Administratorzy aparatu bazy danych powinni zrozumieć, że dostęp do zawartej bazy danych można udzielić na poziomie bazy danych zamiast na poziomie aparatu bazy danych. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania w zakresie zabezpieczeń zawarte bazy danych.

W przypadku korzystania z użytkowników zawartej bazy danych w usłudze Azure SQL Database skonfiguruj dostęp przy użyciu reguły zapory na poziomie bazy danych zamiast reguły zapory na poziomie serwera. Aby uzyskać więcej informacji, zobacz sp_set_database_firewall_rule (Azure SQL Database).

Dla użytkowników baz danych zawieranych w SQL Server 2022 (16.x), Azure SQL Database, Azure SQL Managed Instance oraz Azure Synapse Analytics obsługiwanych przez użytkowników baz danych, SSMS obsługuje uwierzytelnianie wieloskładnikowe. Aby uzyskać więcej informacji, zobacz Using Microsoft Entra multifactor authentication.

Permissions

Wymaga uprawnienia ALTER ANY USER w bazie danych.

Uprawnienia dla wersji SQL Server 2022 i nowszych

Wymaga uprawnienia CREATE USER do bazy danych.

Examples

A. Stwórz użytkownika bazy danych na podstawie logowania do SQL Server

Poniższy przykład najpierw tworzy logowanie test do SQL Server nazwanego w bazie master danych, a następnie tworzy odpowiadającego użytkownikowi test bazy danych w .AdventureWorks2025

--Connect to the master database
CREATE LOGIN test   
    WITH PASSWORD = '<strong password>';  

Zmień na bazę danych użytkownika. Na przykład w programie SQL Server użyj instrukcji USE [AdventureWorks2022]. W Azure SQL Database to USE stwierdzenie nie jest dostępne. Zamiast tego połącz się bezpośrednio z docelową bazą danych i uruchom resztę próbki kodu. Ten przykład oparty na logowaniu nie dotyczy bazy danych SQL w Microsoft Fabric, która nie obsługuje logowania ani użytkowników na podstawie logowań.

--Connect to a user database
CREATE USER test FOR LOGIN test;
GO   

B. Stwórz użytkownika bazy danych z domyślnym schematem

Poniższy przykład najpierw tworzy logowanie serwera o nazwie testlogin hasłem, które podajesz, a następnie tworzy odpowiadającego użytkownikowi testuserbazy danych , z domyślnym schematem Marketing.

--Connect to the master database
CREATE LOGIN testlogin
    WITH PASSWORD = '<strong password>';  

Zmień na bazę danych użytkownika. Na przykład w programie SQL Server użyj instrukcji USE [AdventureWorks2022]. W Azure SQL Database oraz w bazie SQL w Microsoft Fabric oświadczenie nie USE jest dostępne. Zamiast tego połącz się bezpośrednio z docelową bazą danych i uruchom resztę próbki kodu.

--Connect to a user database
CREATE USER testuser FOR LOGIN testlogin
    WITH DEFAULT_SCHEMA = Marketing;  

C. Utwórz użytkownika bazy danych z certyfikatu

Poniższy przykład tworzy test użytkownika bazy danych na podstawie Contoso_Certcertyfikatu. Aby uzyskać więcej informacji, zobacz CREATE CERTIFICATE (Transact-SQL).

USE AdventureWorks2022;  
CREATE CERTIFICATE Contoso_Cert  
    ENCRYPTION BY PASSWORD = '<strong password>'  
    WITH SUBJECT = 'Contoso Facility Supervisors',
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER test FOR CERTIFICATE Contoso_Cert;  
GO   

D. Utworzenie i korzystanie z użytkownika bez logowania

Poniższy przykład tworzy użytkownika bazy danych CustomApp, który nie jest mapowy na dane logowania programu SQL Server. W tym przykładzie udzielono użytkownikowi adventure-works\test uprawnień do personifikacji użytkownika CustomApp.

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

Aby użyć poświadczeń CustomApp, użytkownik adventure-works\test wykonuje następującą instrukcję.

EXECUTE AS USER = 'CustomApp' ;  
GO  

Aby przywrócić poświadczenia adventure-works\test, użytkownik wykonuje następującą instrukcję.

REVERT ;  
GO  

E. Utworzenie zamkniętego użytkownika bazy danych z hasłem

Poniższy przykład tworzy użytkownika zawartej bazy danych z hasłem. Ten przykład można wykonać tylko w zamkniętej bazie danych.

Ten przykład działa w SQL Database, jeśli usuniesz DEFAULT_LANGUAGE.

USE AdventureWorks2022;  
GO  
CREATE USER test  
WITH PASSWORD='<password>'
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F. Stwórz zamkniętego użytkownika bazy danych do logowania do domeny

Poniższy przykład tworzy zamkniętego użytkownika bazy danych dla logowania o nazwie test domena o nazwie Contoso. Ten przykład można wykonać tylko w zamkniętej bazie danych.

USE AdventureWorks2022;
GO  
CREATE USER [Contoso\test] ;  
GO   

G. Stwórz zamkniętego użytkownika bazy danych z konkretnym SID

Poniższy przykład tworzy SQL Server, zamkniętą bazę danych użytkownika o nazwie TestUser. Ten przykład można wykonać tylko w zamkniętej bazie danych.

USE AdventureWorks2022;  
GO  
CREATE USER TestUser WITH PASSWORD = '<strong password>'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;

H. Utworzenie użytkownika do kopiowania zaszyfrowanych danych

Poniższy przykład tworzy użytkownika, który może kopiować dane chronione przez funkcję Always Encrypted z jednego zestawu tabel, zawierających zaszyfrowane kolumny, do innego zestawu tabel z zaszyfrowanymi kolumnami (w tej samej lub innej bazie danych). Aby uzyskać więcej informacji, zobacz Migrate Sensitive Data Protected by Always Encrypted.

Dotyczy do: SQL Server 2016 (13.x) oraz nowszych wersji, SQL Database.

CREATE USER [test]   
WITH   
      DEFAULT_SCHEMA = dbo  
    , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;  

I. Utworzenie użytkownika Microsoft Entra z logowania Microsoft Entra w Azure SQL Database oraz Azure SQL Managed Instance

Aby utworzyć użytkownika Entra firmy Microsoft na podstawie nazwy logowania firmy Microsoft Entra, użyj następującej składni.

Zaloguj się na swój logowy serwer Azure SQL Database lub SQL Managed Instance, korzystając z logowania Microsoft Entra. Użyj logowania administratora serwera lub logowania należącego do loginmanager roli w SQL Database, albo sysadmin przypisanego mu tę rolę w SQL Managed Instance.

Poniższy skrypt języka T-SQL tworzy użytkownika microsoft Entra test@contoso.comz test@contoso.comlogowania . Ten login został utworzony w tym CREATE LOGIN przykładzie.

CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];
GO

Important

Tworząc logowanie USER z Microsoft Entra, określ user_name jako ten sam login_name z .LOGIN

Tworzenie użytkownika Entra firmy Microsoft jako grupy na podstawie nazwy logowania firmy Microsoft Entra, która jest obsługiwana.

CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];

GO

Możesz również utworzyć użytkownika Microsoft Entra na podstawie nazwy logowania firmy Microsoft Entra, która jest grupą.

CREATE USER [test@contoso.com] FROM LOGIN [MS Entra group];

GO

J. Tworzenie użytkownika zawartej bazy danych na podstawie podmiotu zabezpieczeń firmy Microsoft

Poniższa składnia tworzy użytkownika Microsoft Entra test@contoso.comw bazie danych bez skojarzonego logowania w master. Aparat bazy danych sprawdza, czy określony użytkownik istnieje w firmie Microsoft Entra.

CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
GO

W bazie danych SQL w Microsoft Fabric nie możesz użyćFROM EXTERNAL PROVIDER, jeśli głównym wydawcą CREATE USER jest zasada usługowa w Microsoft Entra.

K. Tworzenie użytkownika zawartej bazy danych na podstawie podmiotu zabezpieczeń firmy Microsoft bez walidacji

Dotyczy do: bazy danych SQL w Microsoft Fabric oraz Azure SQL Database

Przykłady w tej sekcji umożliwiają tworzenie użytkowników bazy danych dla podmiotów zabezpieczeń firmy Microsoft bez sprawdzania poprawności głównych nazw w usłudze Microsoft Entra.

Poniższy przykład języka T-SQL tworzy użytkownika bazy danych dla użytkownika Microsoft Entra o nazwie test@contoso.com. Zastąp <unique identifier sid> identyfikatorem SID nowego użytkownika identyfikatorem obiektu użytkownika Microsoft Entra.

DECLARE @principal_name SYSNAME = 'test@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);

Poniższy przykład tworzy użytkownika bazy danych dla jednostki usługi Microsoft Entra o nazwie HRApp. Zastąp <unique identifier sid> identyfikatorem SID nowego użytkownika identyfikatorem klienta jednostki usługi w firmie Microsoft Entra.

Note

Używaj identyfikatora klienta, a nie identyfikatora obiektu, przy określaniu Microsoft Entra zasady usługi, User-Assigned Managed Identity (UAMI) lub System-Assigned Managed Identity (SAMI).

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);

Poniższy przykład tworzy użytkownika bazy danych dla grupy Microsoft Entra o nazwie HR. Zastąp <unique identifier sid> identyfikatorem SID nowego użytkownika identyfikatorem obiektu grupy.

DECLARE @principal_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 [@principal_name] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);