Udostępnij za pośrednictwem


CREATE USER (Transact-SQL)

Dotyczy:sql ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w usłudze Microsoft Fabric

Dodaje użytkownika do bieżącej bazy danych. 13 typów użytkowników znajduje się na liście przykładowej najbardziej podstawowej składni:

Nuta

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\Fritz];

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

  • Użytkownik oparty na logowaniu przy użyciu uwierzytelniania programu SQL Server. CREATE USER Mary;

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

    Nuta

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

    Nuta

    Identyfikatory logowania i w związku z tym użytkownicy na podstawie logowań nie są obsługiwani w bazie danych SQL w usłudze Microsoft Fabric.

Użytkownicy uwierzytelnieni w bazie danych — zalecane, aby ułatwić przenoszenie bazy danych.
Zawsze dozwolone w usłudze 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\Fritz];

  • 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 [Fritz@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\Fritz];

  • 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\Fritz];

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 CarnationProduction50;
  • 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 PacificSales09;

Transact-SQL konwencje składni

Składnia

Składnia dla programu SQL Server, usługi Azure SQL Database, wystąpienia zarządzanego Azure SQL

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

Składnia bazy danych SQL w usłudze Microsoft Fabric

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 }

Składnia dla magazynu danych równoległych

CREATE USER user_name   
    [ { { FOR | FROM }  
      {   
        LOGIN login_name   
      }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]  

Argumenty

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_NAME LOGOWANIA

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 instrukcja CREATE USER jest jedyną instrukcją w partii SQL, usługa Azure SQL Database obsługuje klauzulę WITH LOGIN. Jeśli instrukcja CREATE USER nie jest jedyną instrukcją w partii SQL lub jest wykonywana w dynamicznym języku SQL, klauzula WITH LOGIN nie jest obsługiwana.

WITH DEFAULT_SCHEMA = schema_name

Określa pierwszy schemat, który będzie wyszukiwany 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: SQL Database, SQL Managed Instance, Azure Synapse Analytics, baza danych SQL w usłudze 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.

W przypadku podmiotów zabezpieczeń firmy Microsoft składnia CREATE USER wymaga:

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

    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • podmioty zabezpieczeń serwera Entra firmy Microsoft (identyfikatory logowania) wprowadzenie do tworzenia użytkowników mapowanych na identyfikatory logowania firmy Microsoft Entra w bazie danych wirtualnej master. Na przykład CREATE USER [bob@contoso.com] FROM LOGIN [bob@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.

WITH PASSWORD = 'password'

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

Można jej używać tylko w zawartej bazie danych. Określa hasło tworzonego użytkownika. Począwszy od programu SQL Server 2012 (11.x), przechowywane informacje o hasłach są obliczane przy użyciu algorytmu SHA-512 hasła.

BEZ LOGOWANIA

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

cert_name CERTYFIKATU

Dotyczy: SQL Server 2008 (10.0.x) i nowszych, SQL Database, SQL Database w usłudze Microsoft Fabric

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

ASYM_KEY_NAME KLUCZA ASYMETRYCZNEGO

Dotyczy: SQL Server 2008 (10.0.x) i nowszych, SQL Database, SQL Database w usłudze 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: SQL Server 2012 (11.x) i nowszych, SQL Database

Określa język domyślny dla nowego użytkownika. Jeśli dla użytkownika zostanie określony domyślny język, a domyślny język bazy danych zostanie później zmieniony, domyślny język użytkowników pozostanie określony. Jeśli nie określono języka domyślnego, domyślnym językiem dla użytkownika będzie domyślny język bazy danych. Jeśli język domyślny użytkownika nie zostanie określony, a domyślny język bazy danych zostanie później zmieniony, domyślny język użytkownika zmieni się na nowy język domyślny bazy danych.

Ważny

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

SID = sid

Dotyczy: SQL Server 2012 (11.x) i nowszej oraz do bazy danych SQL w usłudze Microsoft Fabric.

W programie SQL Server 2012 (11.x) i nowszych wersjach dotyczy tylko użytkowników z hasłami (uwierzytelnianie programu SQL Server) w zawartej bazie danych. Określa identyfikator SID nowego użytkownika bazy danych. Jeśli ta opcja nie jest zaznaczona, program SQL Server automatycznie przypisuje identyfikator SID. Użyj parametru SID, aby utworzyć użytkowników w wielu bazach danych, które mają tę samą tożsamość (SID). Jest to przydatne podczas tworzenia użytkowników w wielu bazach danych, aby przygotować się do trybu failover always on. Aby określić identyfikator SID użytkownika, wykonaj zapytanie 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 podmiot zabezpieczeń jest użytkownikiem lub grupą, identyfikator powinien być identyfikatorem obiektu Entra firmy Microsoft użytkownika/grupy. Jeśli jednostka entra firmy Microsoft jest jednostką usługi (aplikacją lub tożsamością zarządzaną), identyfikator powinien być identyfikatorem aplikacji (lub identyfikatorem klienta). Określony identyfikator musi być wartością binary(16). Aparat bazy danych nie weryfikuje określonego identyfikatora w usłudze Microsoft Entra. Argument SID musi być używany razem z TYPE.

TYPE = [ E | X ]

Dotyczy: sql database w usłudze Microsoft Fabric.

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 | OFF ]

Dotyczy: SQL Server 2016 (13.x) i nowszych, 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.

Ostrzeżenie

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.

Z
DOSTAWCY ZEWNĘTRZNEGO

dotyczy: SQL Database, Azure SQL Managed Instance, SQL Database w usłudze 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 podmiot zabezpieczeń wystawiający instrukcję CREATE USER jest podmiotem zabezpieczeń użytkowników firmy Microsoft Entra, podmiot zabezpieczeń (lub grupy podmiotu zabezpieczeń) musi znajdować się w roli czytelników katalogów w firmie 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 usłudze SQL Database w usłudze Microsoft Fabric FROM EXTERNAL PROVIDER nie jest dozwolona, jeśli podmiot wystawiający CREATE USER jest jednostką usługi w usłudze 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: SQL Database, Azure SQL Managed Instance, SQL Database w usłudze Microsoft Fabric

Określa identyfikator obiektu Entra firmy Microsoft. Jeśli określono OBJECT_ID, user_name może być aliasem zdefiniowanym przez użytkownika utworzonym na podstawie 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. Aby uzyskać więcej informacji na temat korzystania z opcji WITH OBJECT_ID, zobacz logowania firmy Microsoft Entra i użytkowników z nazwami wyświetlanymi bez nazw.

Nuta

Jeśli nazwa wyświetlana jednostki usługi nie jest duplikatem, należy użyć domyślnej instrukcji CREATE LOGIN lub CREATE USER. Rozszerzenie WITH OBJECT_ID to element naprawy rozwiązywania problemów zaimplementowany do użytku z jednostkami usługi bez jednostki usługi. Korzystanie z niej z unikatową jednostką usługi nie jest zalecane. Użycie rozszerzenia WITH OBJECT_ID dla jednostki usługi bez dodawania sufiksu zostanie pomyślnie uruchomione, ale nie będzie oczywiste, dla której jednostki usługi utworzono nazwę logowania lub użytkownika. Zaleca się utworzenie aliasu przy użyciu sufiksu w celu unikatowego zidentyfikowania jednostki usługi. Rozszerzenie WITH OBJECT_ID nie jest obsługiwane w przypadku programu SQL Server.

Uwagi

Jeśli FOR LOGIN zostanie pominięty, nowy użytkownik bazy danych zostanie zamapowany na identyfikator logowania programu SQL Server o tej samej nazwie.

Domyślny schemat będzie pierwszym schematem, który będzie przeszukiwany przez serwer podczas rozpoznawania nazw obiektów dla tego użytkownika bazy danych. Jeśli nie określono inaczej, domyślny schemat będzie właścicielem obiektów utworzonych przez tego użytkownika bazy danych.

Jeśli użytkownik ma domyślny schemat, zostanie użyty ten domyślny schemat. Jeśli użytkownik nie ma schematu domyślnego, ale użytkownik jest członkiem grupy, która ma schemat domyślny, zostanie użyty domyślny schemat grupy. Jeśli użytkownik nie ma schematu domyślnego i jest członkiem więcej niż jednej grupy, domyślnym schematem dla użytkownika będzie grupa systemu Windows z najniższym principal_id i jawnie ustawiony schemat domyślny. (Nie można jawnie wybrać jednego z dostępnych schematów domyślnych jako preferowanego schematu). Jeśli nie można określić domyślnego schematu dla użytkownika, zostanie użyty schemat dbo.

DEFAULT_SCHEMA można ustawić przed utworzeniem schematu, do którego wskazuje.

DEFAULT_SCHEMA nie można określić podczas tworzenia użytkownika mapowanego na certyfikat lub klucza asymetrycznego.

Wartość DEFAULT_SCHEMA jest ignorowana, jeśli użytkownik jest członkiem stałej roli serwera sysadmin. Wszyscy członkowie stałej roli serwera sysadmin mają domyślny schemat dbo.

Klauzula WITHOUT LOGIN tworzy użytkownika, który nie jest mapowany na dane logowania programu SQL Server. Może łączyć się z innymi bazami danych jako gość. Uprawnienia można przypisać do tego użytkownika bez logowania, a gdy kontekst zabezpieczeń zostanie zmieniony na użytkownika bez logowania, oryginalny użytkownik otrzymuje uprawnienia użytkownika bez logowania. Zobacz przykład 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żna użyć polecenia CREATE USER do utworzenia użytkownika-gościa, ponieważ użytkownik-gość już istnieje w każdej bazie danych. Możesz włączyć użytkownika-gościa, udzielając mu uprawnienia CONNECT, jak pokazano poniżej:

GRANT CONNECT TO guest; 
GO  

Informacje o użytkownikach bazy danych są widoczne 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. Identyfikatory logowania entra firmy Microsoft umożliwiają mapowanie podmiotów zabezpieczeń firmy Microsoft na poziomie bazy danych na identyfikatory logowania microsoft entra na poziomie serwera. Aby utworzyć użytkownika entra firmy Microsoft na podstawie nazwy logowania firmy Microsoft Entra, użyj następującej składni:

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

Podczas tworzenia użytkownika w bazie danych Azure SQL Database login_name musi odpowiadać istniejącemu identyfikatorowi logowania firmy Microsoft Entra lub innemu użyciu klauzuli FROM EXTERNAL PROVIDER utworzy tylko użytkownika Microsoft Entra bez logowania w bazie danych master. Na przykład to polecenie spowoduje utworzenie zawartego użytkownika:

CREATE USER [bob@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\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

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.

Ważny

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\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'

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\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]

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

Bezpieczeństwo

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.

Specjalne zagadnienia 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 na podstawie logowania uwierzytelniania programu SQL Server do użytkownika zawartej bazy 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).

W przypadku programów SQL Server 2022 (16.x), SQL Database, Azure SQL Managed Instance i Azure Synapse Analytics zawarto użytkowników bazy danych, program SSMS obsługuje uwierzytelnianie wieloskładnikowe. Aby uzyskać więcej informacji, zobacz Using Microsoft Entra multifactor authentication.

Uprawnienia

Wymaga uprawnienia ALTER ANY USER w bazie danych.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia CREATE USER w bazie danych.

Przykłady

A. Tworzenie użytkownika bazy danych na podstawie identyfikatora logowania programu SQL Server

Poniższy przykład najpierw tworzy identyfikator logowania programu SQL Server o nazwie AbolrousHazem, a następnie tworzy odpowiedniego użytkownika bazy danych AbolrousHazem w AdventureWorks2022.

CREATE LOGIN AbolrousHazem   
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';  

Zmień na bazę danych użytkownika. Na przykład w programie SQL Server użyj instrukcji USE AdventureWorks2022. W usłudze Azure Synapse Analytics and Analytics Platform System (PDW) należy nawiązać nowe połączenie z bazą danych użytkowników.

CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;  
GO   

B. Tworzenie użytkownika bazy danych z domyślnym schematem

Poniższy przykład najpierw tworzy identyfikator logowania serwera o nazwie WanidaBenshoof z hasłem, a następnie tworzy odpowiedniego użytkownika bazy danych Wanidaz domyślnym schematem Marketing.

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

C. Tworzenie użytkownika bazy danych na podstawie certyfikatu

Poniższy przykład tworzy JinghaoLiu użytkownika bazy danych na podstawie CarnationProduction50certyfikatu.

Dotyczy: SQL Server 2008 (10.0.x) i nowszych.

USE AdventureWorks2022;  
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 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\tengiz0 uprawnień do personifikacji użytkownika CustomApp.

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

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

EXECUTE AS USER = 'CustomApp' ;  
GO  

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

REVERT ;  
GO  

E. Tworzenie użytkownika zawartej 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 zawartej bazie danych.

Dotyczy: SQL Server 2012 (11.x) i nowsze. Ten przykład działa w usłudze SQL Database, jeśli DEFAULT_LANGUAGE zostanie usunięty.

USE AdventureWorks2022;  
GO  
CREATE USER Carlo  
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'  
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F. Tworzenie użytkownika zawartej bazy danych na potrzeby logowania do domeny

Poniższy przykład tworzy użytkownika zawartej bazy danych dla nazwy logowania o nazwie Fritz w domenie o nazwie Contoso. Ten przykład można wykonać tylko w zawartej bazie danych.

Dotyczy: SQL Server 2012 (11.x) i nowsze.

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

G. Tworzenie użytkownika zawartej bazy danych z określonym identyfikatorem SID

Poniższy przykład tworzy uwierzytelnionego użytkownika zawartej bazy danych programu SQL Server o nazwie CarmenW. Ten przykład można wykonać tylko w zawartej bazie danych.

Dotyczy: SQL Server 2012 (11.x) i nowsze.

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

H. Tworzenie użytkownika w celu skopiowania 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: SQL Server 2016 (13.x) i nowszych, SQL Database.

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

Ja. Tworzenie użytkownika entra firmy Microsoft na podstawie identyfikatora logowania entra firmy Microsoft w usłudze Azure SQL

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

Zaloguj się do serwera logicznego na platformie Azure lub w usłudze SQL Managed Instance przy użyciu identyfikatora logowania firmy Microsoft Entra, któremu udzielono roli sysadmin w usłudze SQL Managed Instance lub roli loginmanager w usłudze SQL Database. Poniższy skrypt języka T-SQL tworzy użytkownika microsoft Entra bob@contoso.comz bob@contoso.comlogowania . To logowanie zostało utworzone w przykładzie CREATE LOGIN.

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

Ważny

Podczas tworzenia USER na podstawie logowania firmy Microsoft Entra określ user_name co 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 [bob@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 bob@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 [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO

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

dotyczy usługi: baza danych SQL w usłudze Microsoft Fabric

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 bob@contoso.com. Zastąp <unique identifier sid> identyfikatorem SID nowego użytkownika identyfikatorem obiektu użytkownika Microsoft Entra.

DECLARE @principal_name SYSNAME = 'bob@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.

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

Następne kroki

Po utworzeniu użytkownika rozważ dodanie użytkownika do roli bazy danych przy użyciu instrukcji ALTER ROLE.
Możesz również przyznać uprawnienia obiektu do roli, aby mogły uzyskiwać dostęp do tabel. Aby uzyskać ogólne informacje na temat modelu zabezpieczeń programu SQL Server, zobacz Permissions.