Udostępnij za pośrednictwem


CREATE LOGIN (Transact-SQL)

Tworzy dane logowania dla baz danych SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics lub Analytics Platform System. Wybierz jedną z poniższych kart składni, argumentów, uwag, uprawnień i przykładów dla określonej wersji.

Create LOGIN uczestniczy w transakcjach. Jeśli polecenie CREATE LOGIN jest wykonywane w ramach transakcji, a transakcja zostanie wycofana, tworzenie logowania zostanie wycofane. Jeśli jest wykonywane w ramach transakcji, utworzone logowanie nie może być używane do momentu zatwierdzenia transakcji.

Uwaga / Notatka

Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).

Aby uzyskać więcej informacji na temat konwencji składni, zobacz Transact-SQL konwencje składni.

Wybieranie produktu

W poniższym wierszu wybierz nazwę produktu, którą cię interesuje, i zostanie wyświetlona tylko informacja o tym produkcie.

* SQL Server *  

 

SQL Server

Składnia

-- Syntax for SQL Server
CREATE LOGIN login_name { WITH <option_list1> | FROM <sources> }

<option_list1> ::=
    PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]
    [ , <option_list2> [ ,... ] ]

<option_list2> ::=
    SID = sid
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language
    | CHECK_EXPIRATION = { ON | OFF}
    | CHECK_POLICY = { ON | OFF}
    | CREDENTIAL = credential_name

<sources> ::=
    WINDOWS [ WITH <windows_options>[ ,... ] ]
    | EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | CERTIFICATE certname
    | ASYMMETRIC KEY asym_key_name

<windows_options> ::=
    DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language

Argumenty (w programowaniu)

login_name

Określa nazwę utworzonego identyfikatora logowania. Istnieją pięć typów identyfikatorów logowania: identyfikatory logowania programu SQL Server, identyfikatory logowania systemu Windows, identyfikatory logowania firmy Microsoft Entra, identyfikatory logowania mapowane za pomocą certyfikatu i logowania mapowane przy użyciu klucza asymetrycznego.

Podczas tworzenia identyfikatorów logowania mapowanych z konta domeny systemu Windows należy użyć nazwy logowania w formacie [<domainName>\<login_name>]. Nie można użyć nazwy UPN w formacie login_name@DomainName. Przykład można znaleźć w przykładzie E w dalszej części tego artykułu. Identyfikatory logowania uwierzytelniania są typu sysname i muszą być zgodne z regułami identyfikatorów i nie mogą zawierać ukośnika odwrotnego (). Identyfikatory logowania systemu Windows mogą zawierać element "\". Identyfikatory logowania oparte na użytkownikach usługi Active Directory są ograniczone do nazw mniejszych niż 21 znaków.

W przypadku używania klauzuli FROM EXTERNAL PROVIDER nazwa logowania musi być zgodna z nazwą wyświetlaną istniejącego podmiotu zabezpieczeń firmy Microsoft w tej samej dzierżawie, do którego jest włączone wystąpienie SQL. Użytkownicy, grupy i aplikacje firmy Microsoft Entra mogą służyć do tworzenia identyfikatorów logowania.

PASSWORD ='password'

Dotyczy tylko identyfikatorów logowania programu SQL Server. Określa hasło do tworzonego identyfikatora logowania. Użyj silnego hasła. Aby uzyskać więcej informacji, zobacz Silne hasła i Zasady haseł.

Począwszy od programu SQL Server 2012 (11.x), program SQL Server i usługa Azure SQL DB używał skrótu SHA-512 w połączeniu z 32-bitową i unikatową solą. Ta metoda uczyniła ją statystycznie niewykonalną dla osób atakujących w celu wyłudzenia haseł.

Program SQL Server 2025 (17.x) w wersji zapoznawczej 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.

W hasłach jest rozróżniana wielkość liter. Hasła powinny mieć długość co najmniej ośmiu znaków i nie mogą przekraczać 128 znaków. Hasła mogą zawierać znaki a-z, A-Z, 0-9 i większość znaków niealfanumerycznych. Hasła nie mogą zawierać pojedynczych cudzysłowów ani login_name.

HASŁO = hashed_password

Dotyczy tylko słowa kluczowego HASHED. Określa wartość skrótu hasła dla tworzonego identyfikatora logowania.

MIESZANY

Dotyczy tylko identyfikatorów logowania programu SQL Server. Określa, że hasło wprowadzone po argumencie PASSWORD jest już skrótem. Jeśli ta opcja nie zostanie wybrana, ciąg wprowadzony jako hasło zostanie skrócony przed zapisaniem go w bazie danych. Ta opcja powinna być używana tylko do migrowania baz danych z jednego serwera do innego. Nie używaj opcji HASHED, aby utworzyć nowe identyfikatory logowania. Opcji HASHED nie można używać z skrótami utworzonymi przez program SQL 7 lub starszym.

MUST_CHANGE

Dotyczy tylko identyfikatorów logowania programu SQL Server. Jeśli ta opcja jest dołączona, program SQL Server monituje użytkownika o nowe hasło przy pierwszym użyciu nowego logowania.

CREDENTIAL =credential_name

Nazwa poświadczenia, które ma zostać zamapowane na nowe logowanie do programu SQL Server. Poświadczenia muszą już istnieć na serwerze. Obecnie ta opcja łączy poświadczenia tylko z identyfikatorem logowania. Nie można zamapować poświadczenia na identyfikator logowania administratora systemu (sa).

SID = sid

Służy do ponownego tworzenia identyfikatora logowania. Dotyczy tylko identyfikatorów logowania uwierzytelniania programu SQL Server, a nie identyfikatorów logowania uwierzytelniania systemu Windows. Określa identyfikator SID nowego logowania uwierzytelniania programu SQL Server. Jeśli ta opcja nie jest używana, program SQL Server automatycznie przypisuje identyfikator SID. Struktura identyfikatora SID zależy od wersji programu SQL Server. Identyfikator SID logowania programu SQL Server: wartość literału 16 bajtów (binary(16)) na podstawie identyfikatora GUID. Na przykład SID = 0x14585E90117152449347750164BA00A7.

DEFAULT_DATABASE =baza danych

Określa domyślną bazę danych, która ma być przypisana do logowania. Jeśli ta opcja nie jest dołączona, domyślna baza danych jest ustawiona na masterwartość .

DEFAULT_LANGUAGE =language

Określa domyślny język, który ma zostać przypisany do logowania. Jeśli ta opcja nie jest dołączona, domyślny język jest ustawiony na bieżący język domyślny serwera. Jeśli domyślny język serwera zostanie później zmieniony, domyślny język logowania pozostanie niezmieniony.

CHECK_EXPIRATION = { ON | WYŁ. }

Dotyczy tylko identyfikatorów logowania programu SQL Server. Określa, czy zasady wygasania haseł powinny być wymuszane podczas tego logowania. Wartość domyślna to OFF.

CHECK_POLICY = { ON | WYŁ. }

Dotyczy tylko identyfikatorów logowania programu SQL Server. Określa, że zasady haseł systemu Windows komputera, na którym działa program SQL Server, powinny być wymuszane na tym logowaniu. Wartość domyślna to WŁĄCZONE.

Jeśli zasady systemu Windows wymagają silnych haseł, hasła muszą zawierać co najmniej trzy z następujących czterech cech:

  • Wielkie litery (A-Z).
  • Małe litery (a-z).
  • Cyfra (0–9).
  • Jeden z znaków nieliczbowych, takich jak spacja, _, @, @, *, ^, %, !, $, #lub &.

Okna

Określa, że nazwa logowania ma być mapowana na dane logowania systemu Windows.

OD DOSTAWCY ZEWNĘTRZNEGO

Określa, że nazwa logowania jest mapowana na podmiot zabezpieczeń firmy Microsoft. Ta opcja jest dostępna dla programu SQL Server 2022 z obsługą usługi Arc i nowszych wersji. Aby uzyskać więcej informacji, zobacz Microsoft Entra authentication for SQL Server (Uwierzytelnianie entra firmy Microsoft dla programu SQL Server)

WITH OBJECT_ID = "objectid"

Dotyczy: SQL Server 2025 (17.x) Preview i nowsze

Określa identyfikator obiektu Entra firmy Microsoft. 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.

Nazwa certyfikatu

Określa nazwę certyfikatu, który ma być skojarzony z tym identyfikatorem logowania. Ten certyfikat musi już występować w master bazie danych.

ASYM_KEY_NAME KLUCZA ASYMETRYCZNEGO

Określa nazwę klucza asymetrycznego, który ma być skojarzony z tym identyfikatorem logowania. Ten klucz musi już występować w master bazie danych.

Uwagi

  • W hasłach jest rozróżniana wielkość liter.
  • Wstępne tworzenie haseł jest obsługiwane tylko podczas tworzenia identyfikatorów logowania programu SQL Server.
  • W przypadku MUST_CHANGE określenia parametru CHECK_EXPIRATION i CHECK_POLICY należy ustawić wartość ON. W przeciwnym razie instrukcja zakończy się niepowodzeniem.
  • Kombinacja elementów CHECK_POLICY = OFF i CHECK_EXPIRATION = ON nie jest obsługiwana.
  • Gdy CHECK_POLICY jest ustawiona na OFFwartość , lockout_time jest resetowany i CHECK_EXPIRATION jest ustawiony na OFFwartość .

Ważne

CHECK_EXPIRATION i CHECK_POLICY są wymuszane tylko w systemie Windows Server 2003 i nowszych wersjach. Aby uzyskać więcej informacji, zobacz politykę haseł.

Uprawnienia

  • Tylko użytkownicy z uprawnieniem ALTER ANY LOGIN na serwerze lub członkostwem w stałej roli serwera securityadmin mogą tworzyć identyfikatory logowania. Aby uzyskać więcej informacji, zobacz roleServer-Level i ALTER SERVER ROLE.
  • Jeśli jest używana opcja CREDENTIAL , wymagane jest również uprawnienie ALTER ANY CREDENTIAL na serwerze.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia CREATE LOGIN na serwerze lub członkostwie w stałej roli serwera ##MS_LoginManager##.

Po utworzeniu identyfikatora logowania

Po utworzeniu identyfikatora logowania identyfikator logowania może nawiązać połączenie z programem SQL Server, ale ma tylko uprawnienia przyznane roli publicznej . Rozważ wykonanie niektórych z następujących działań.

  • Aby nawiązać połączenie z bazą danych, utwórz użytkownika bazy danych na potrzeby logowania. Aby uzyskać więcej informacji, zobacz CREATE USER (TWORZENIE UŻYTKOWNIKA).
  • Utwórz rolę serwera zdefiniowaną przez użytkownika przy użyciu funkcji CREATE SERVER ROLE. Służy ALTER SERVER ROLE ... ADD MEMBER do dodawania nowego identyfikatora logowania do roli serwera zdefiniowanego przez użytkownika. Aby uzyskać więcej informacji, zobacz CREATE SERVER ROLE (TWORZENIE ROLI SERWERA ) i ALTER SERVER ROLE (ALTER SERVER ROLE).
  • Użyj sp_addsrvrolemember polecenia , aby dodać identyfikator logowania do stałej roli serwera. Aby uzyskać więcej informacji, zobacz Server-Level Role i sp_addsrvrolemember.
  • Użyj instrukcji GRANT , aby udzielić uprawnień na poziomie serwera do nowego identyfikatora logowania lub roli zawierającej identyfikator logowania. Aby uzyskać więcej informacji, zobacz GRANT.

Przykłady

Odp. Tworzenie logowania przy użyciu hasła

Poniższy przykład tworzy identyfikator logowania dla określonego użytkownika i przypisuje hasło.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Tworzenie nazwy logowania przy użyciu hasła, które należy zmienić

Poniższy przykład tworzy identyfikator logowania dla określonego użytkownika i przypisuje hasło. Opcja MUST_CHANGE wymaga od użytkowników zmiany tego hasła przy pierwszym połączeniu się z serwerem.

Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>'
    MUST_CHANGE, CHECK_EXPIRATION = ON;
GO

Uwaga / Notatka

Nie można użyć opcji MUST_CHANGE, gdy CHECK_EXPIRATION jest wyłączona.

C. Tworzenie logowania mapowanego na poświadczenia

Poniższy przykład tworzy identyfikator logowania dla określonego użytkownika przy użyciu użytkownika. To logowanie jest mapowane na poświadczenia.

Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>',
    CREDENTIAL = <credentialName>;
GO

D. Tworzenie identyfikatora logowania na podstawie certyfikatu

Poniższy przykład tworzy identyfikator logowania dla określonego użytkownika na podstawie certyfikatu w programie master.

Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje.

USE MASTER;
CREATE CERTIFICATE <certificateName>
    WITH SUBJECT = '<login_name> certificate in master database',
    EXPIRY_DATE = '12/05/2025';
GO
CREATE LOGIN <login_name> FROM CERTIFICATE <certificateName>;
GO

E. Tworzenie logowania na podstawie konta domeny systemu Windows

W poniższym przykładzie zostanie utworzone logowanie na podstawie konta domeny systemu Windows.

Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje.

CREATE LOGIN [<domainName>\<login_name>] FROM WINDOWS;
GO

F. Tworzenie identyfikatora logowania na podstawie identyfikatora SID

Poniższy przykład najpierw tworzy identyfikator logowania uwierzytelniania programu SQL Server i określa identyfikator SID logowania.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';
SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

Moje zapytanie zwraca 0x241C11948AEEB749B0D22646DB1A19F2 jako identyfikator SID. Zapytanie zwróci inną wartość. Poniższe instrukcje usuwają identyfikator logowania, a następnie ponownie utwórz identyfikator logowania. Użyj identyfikatora SID z poprzedniego zapytania.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

G. Tworzenie identyfikatora logowania z wieloma argumentami

W poniższym przykładzie pokazano, jak ciągować wiele argumentów razem przy użyciu przecinków między każdym argumentem. Zastąp <password> prawidłowym hasłem.

CREATE LOGIN [MyUser]
WITH PASSWORD = '<password>',
DEFAULT_DATABASE = MyDatabase,
CHECK_POLICY = OFF,
CHECK_EXPIRATION = OFF ;

H. Tworzenie identyfikatora logowania SQL przy użyciu skrótu hasła

W poniższym przykładzie pokazano, jak utworzyć identyfikatory logowania SQL z tym samym hasłem co istniejące identyfikatory logowania, jak w scenariuszu migracji. Pierwszym krokiem jest pobranie skrótu hasła z istniejących identyfikatorów logowania na źródłowym serwerze bazy danych. Następnie ten sam skrót zostanie użyty do utworzenia identyfikatora logowania na nowym serwerze bazy danych. Dzięki temu nowe logowanie będzie miało takie samo hasło jak na starym serwerze.

-- run this to retrieve the password hash for an individual Login:
SELECT LOGINPROPERTY('Andreas','PASSWORDHASH') AS password_hash;
-- as an alternative, the catalog view sys.sql_logins can be used to retrieve the password hashes for multiple accounts at once. (This could be used to create a dynamic sql statement from the result set
SELECT name, password_hash
FROM sys.sql_logins
  WHERE
    principal_id > 1    -- excluding sa
    AND
    name NOT LIKE '##MS_%##' -- excluding special MS system accounts
-- create the new SQL Login on the new database server using the hash of the source server
CREATE LOGIN Andreas
  WITH PASSWORD = 0x02000A1A89CD6C6E4C8B30A282354C8EA0860719D5D3AD05E0CAE1952A1C6107A4ED26BEBA2A13B12FAB5093B3CC2A1055910CC0F4B9686A358604E99BB9933C75B4EA48FDEA HASHED;

Ja. Tworzenie identyfikatora logowania dla użytkownika entra firmy Microsoft

Poniższy przykład tworzy identyfikator logowania dla konta joe@contoso.onmicrosoft.com Microsoft Entra, które istnieje w dzierżawie firmy Microsoft Entra o nazwie contoso.

CREATE LOGIN [joe@contoso.onmicrosoft.com] FROM EXTERNAL PROVIDER

GO

J. Tworzenie logowania dla federacyjnego konta Microsoft Entra

Poniższy przykład tworzy identyfikator logowania dla federacyjnego konta bob@contoso.com Microsoft Entra, które istnieje w dzierżawie o nazwie contoso. Użytkownik bob może być również użytkownikiem-gościem.

CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
GO

K. Tworzenie identyfikatora logowania dla grupy Microsoft Entra

W poniższym przykładzie zostanie utworzona nazwa logowania dla grupy mygroup firmy Microsoft, która istnieje w dzierżawie contoso.

CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
GO

L. Tworzenie identyfikatora logowania dla aplikacji Firmy Microsoft Entra

Poniższy przykład tworzy identyfikator logowania dla aplikacji Microsoft Entra, która istnieje w dzierżawie contoso.

CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER

* Azure SQL Database *  

 

Baza Danych SQL

Aby uzyskać więcej informacji na temat łączności i autoryzacji z usługą Azure SQL Database, zobacz:

Składnia

-- Syntax for Azure SQL Database
CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

Argumenty (w programowaniu)

login_name

Uwaga / Notatka

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

W przypadku użycia z klauzulą FROM EXTERNAL PROVIDER identyfikator logowania określa podmiot zabezpieczeń firmy Microsoft, który jest użytkownikiem, grupą lub aplikacją firmy Microsoft Entra. W przeciwnym razie identyfikator logowania reprezentuje nazwę utworzonego identyfikatora logowania SQL.

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

OD DOSTAWCY ZEWNĘTRZNEGO

Określa, że identyfikator logowania dotyczy uwierzytelniania entra firmy Microsoft.

WITH OBJECT_ID = "objectid"

Określa identyfikator obiektu Entra firmy Microsoft. OBJECT_ID Jeśli parametr jest określony, login_name nie jest wymagany do dopasowania nazwy wyświetlanej firmy Microsoft Entra. Login_name musi być unikatową nazwą w sys.server_principals widoku i przestrzegać wszystkich innych sysname ograniczeń. 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.

Uwaga / Notatka

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 nonunique. Korzystanie z niej z unikatową jednostką usługi nie jest zalecane. WITH OBJECT_ID Użycie rozszerzenia dla jednostki usługi bez dodawania sufiksu zostanie uruchomione pomyślnie, 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.

HASŁO ='password'

Określa hasło do tworzonego identyfikatora logowania SQL. Użyj silnego hasła. Aby uzyskać więcej informacji, zobacz Silne hasła i Zasady haseł. Począwszy od programu SQL Server 2012 (11.x), przechowywane informacje o hasłach są obliczane przy użyciu algorytmu SHA-512 hasła.

W hasłach jest rozróżniana wielkość liter. Hasła powinny mieć długość co najmniej ośmiu znaków i nie mogą przekraczać 128 znaków. Hasła mogą zawierać znaki a-z, A-Z, 0-9 i większość znaków niealfanumerycznych. Hasła nie mogą zawierać pojedynczych cudzysłowów ani login_name.

SID = sid

Służy do ponownego tworzenia identyfikatora logowania. Dotyczy tylko identyfikatorów logowania uwierzytelniania programu SQL Server, a nie identyfikatorów logowania uwierzytelniania systemu Windows. Określa identyfikator SID nowego logowania uwierzytelniania programu SQL Server. Jeśli ta opcja nie jest używana, program SQL Server automatycznie przypisuje identyfikator SID. Struktura identyfikatora SID zależy od wersji programu SQL Server. W przypadku usługi SQL Database jest to literał 32 bajtów (binary(32)) składający się 0x01060000000000640000000000000000 z plus 16 bajtów reprezentujących identyfikator GUID. Na przykład SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.

Uwagi

  • W hasłach jest rozróżniana wielkość liter.
  • Utworzenie identyfikatora logowania automatycznie włącza nowe logowanie i przyznaje identyfikatorowi logowania uprawnienia CONNECT SQL na poziomie serwera.

Ważne

Aby uzyskać informacje na temat pracy z nazwami logowania i użytkownikami w usłudze Azure SQL Database, zobacz Zarządzanie identyfikatorami logowania w usłudze Azure SQL Database.

Zaloguj się

Identyfikatory logowania usługi SQL Database

Instrukcja CREATE LOGIN musi być jedyną instrukcją w partii.

W niektórych metodach nawiązywania połączenia z usługą SQL Database, takich jak sqlcmd, należy dołączyć nazwę serwera usługi SQL Database do nazwy logowania w parametrach połączenia przy użyciu <notacji serwera logowania>@.<> Jeśli na przykład identyfikator logowania to login1 i w pełni kwalifikowana nazwa serwera usługi SQL Database to servername.database.windows.net, parametr nazwy użytkownika parametrów połączenia powinien mieć wartość login1@servername. Ponieważ łączna długość parametru nazwy użytkownika wynosi 128 znaków, login_name jest ograniczona do 127 znaków pomniejszonej o długość nazwy serwera. W tym przykładzie może zawierać tylko 117 znaków, login_name ponieważ servername ma 10 znaków.

W usłudze SQL Database musisz mieć połączenie z master bazą danych z odpowiednimi uprawnieniami, aby utworzyć identyfikator logowania. Aby uzyskać więcej informacji, zobacz Tworzenie dodatkowych identyfikatorów logowania i użytkowników z uprawnieniami administracyjnymi.

Reguły programu SQL Server umożliwiają utworzenie logowania uwierzytelniania programu SQL Server w formacie <loginname>@<servername>. Jeśli serwer usługi SQL Database to myazureserver , a identyfikator logowania to myemail@contoso.com, musisz podać identyfikator logowania jako myemail@contoso.com@myazureserver.

W usłudze SQL Database dane logowania wymagane do uwierzytelnienia reguł zapory na poziomie serwera i połączenia są tymczasowo buforowane w każdej bazie danych. Ta pamięć podręczna jest okresowo odświeżana. Aby wymusić odświeżenie pamięci podręcznej uwierzytelniania i upewnić się, że baza danych ma najnowszą wersję tabeli logins, wykonaj DBCC FLUSHAUTHCACHE.

Uprawnienia

Tylko identyfikator logowania podmiotu zabezpieczeń na poziomie serwera (utworzony przez proces aprowizacji) lub członkowie loginmanager roli bazy danych w master bazie danych mogą tworzyć nowe identyfikatory logowania. Aby uzyskać więcej informacji, zobacz Tworzenie dodatkowych identyfikatorów logowania i użytkowników z uprawnieniami administracyjnymi.

Przykłady

Odp. Tworzenie logowania przy użyciu hasła

Poniższy przykład tworzy identyfikator logowania dla określonego użytkownika i przypisuje hasło. Połącz się z bazami master danych, a następnie użyj poniższego przykładu kodu.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Tworzenie identyfikatora logowania na podstawie identyfikatora SID

Poniższy przykład najpierw tworzy identyfikator logowania uwierzytelniania programu SQL Server i określa identyfikator SID logowania. Połącz się z bazami master danych, a następnie użyj poniższego przykładu kodu.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

Moje zapytanie zwraca 0x241C11948AEEB749B0D22646DB1A19F2 jako identyfikator SID. Zapytanie zwróci inną wartość. Poniższe instrukcje usuwają identyfikator logowania, a następnie ponownie utwórz identyfikator logowania. Użyj identyfikatora SID z poprzedniego zapytania.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

C. Tworzenie logowania przy użyciu konta Microsoft Entra

W tym przykładzie utworzono identyfikator logowania na serwerze logicznym Usługi Azure SQL przy użyciu poświadczeń użytkownika bob@contoso.com , który istnieje w domenie Microsoft Entra o nazwie contoso. Połącz się z bazami master danych, a następnie użyj poniższego przykładu kodu.

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

D. Tworzenie identyfikatora logowania z aliasem przy użyciu identyfikatora obiektu

Możesz utworzyć alias dla login_name , określając identyfikator obiektu jednostki lub grupy usługi Microsoft Entra. Połącz się z bazami master danych, a następnie użyj poniższego przykładu kodu.

CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER 
  WITH OBJECT_ID='aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb';

Aby uzyskać więcej informacji na temat uzyskiwania identyfikatora obiektu jednostki usługi, zobacz Obiekty jednostki usługi w identyfikatorze Entra firmy Microsoft.

* Azure SQL
Wystąpienie zarządzane *

 

Azure SQL Managed Instance (Zarządzana Instancja Azure SQL)

Składnia

-- Syntax for Azure SQL Managed Instance
CREATE LOGIN login_name [FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] ] { WITH <option_list> [,..]}

<option_list> ::=
    PASSWORD = {'password'}
    | SID = sid
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language

Argumenty (w programowaniu)

login_name

W przypadku użycia z klauzulą FROM EXTERNAL PROVIDER identyfikator logowania określa podmiot zabezpieczeń firmy Microsoft, który jest użytkownikiem, grupą lub aplikacją firmy Microsoft Entra. W przeciwnym razie identyfikator logowania reprezentuje nazwę utworzonego identyfikatora logowania SQL.

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

Z
DOSTAWCY ZEWNĘTRZNEGO

Określa, że identyfikator logowania dotyczy uwierzytelniania entra firmy Microsoft.

WITH OBJECT_ID = "objectid"

Określa identyfikator obiektu Entra firmy Microsoft. OBJECT_ID Jeśli parametr jest określony, login_name może być aliasem zdefiniowanym przez użytkownika utworzonym na podstawie oryginalnej głównej nazwy wyświetlanej z dołączonym sufiksem. Login_name musi być unikatową nazwą w sys.server_principals widoku i przestrzegać wszystkich innych sysname ograniczeń. 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.

Uwaga / Notatka

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 jest w publicznej wersji zapoznawczej i jest elementem naprawy rozwiązywania problemów zaimplementowanym do użytku z jednostkami usługi bez obsługi. Używanie jej z unikatową jednostką usługi nie jest konieczne. WITH OBJECT_ID Użycie rozszerzenia dla jednostki usługi bez dodawania sufiksu zostanie uruchomione pomyślnie, 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.

PASSWORD = 'password'

Określa hasło do tworzonego identyfikatora logowania SQL. Użyj silnego hasła. Aby uzyskać więcej informacji, zobacz Silne hasła i Zasady haseł. Począwszy od programu SQL Server 2012 (11.x), przechowywane informacje o hasłach są obliczane przy użyciu algorytmu SHA-512 hasła.

W hasłach jest rozróżniana wielkość liter. Hasła powinny mieć długość co najmniej 10 znaków i nie mogą przekraczać 128 znaków. Hasła mogą zawierać znaki a-z, A-Z, 0-9 i większość znaków niealfanumerycznych. Hasła nie mogą zawierać pojedynczych cudzysłowów ani login_name.

SID = sid

Służy do ponownego tworzenia identyfikatora logowania. Dotyczy tylko identyfikatorów logowania uwierzytelniania programu SQL Server. Określa identyfikator SID nowego logowania uwierzytelniania programu SQL Server. Jeśli ta opcja nie jest używana, program SQL Server automatycznie przypisuje identyfikator SID. Struktura identyfikatora SID zależy od wersji programu SQL Server. W przypadku usługi SQL Database jest to literał 32 bajtów (binary(32)) składający się 0x01060000000000640000000000000000 z plus 16 bajtów reprezentujących identyfikator GUID. Na przykład SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.

Uwagi

  • Składnia FROM EXTERNAL PROVIDER tworzy podmioty zabezpieczeń na poziomie serwera mapowane na konta Microsoft Entra

  • Po FROM EXTERNAL PROVIDER określeniu:

    • Login_name musi reprezentować istniejące konto microsoft Entra (użytkownika, grupy lub aplikacji), które jest dostępne w identyfikatorze Entra firmy Microsoft przez bieżące wystąpienie zarządzane usługi Azure SQL. W przypadku podmiotów zabezpieczeń firmy Microsoft składnia CREATE LOGIN wymaga:

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

      • DisplayName obiektu Entra firmy Microsoft dla grup i aplikacji firmy Microsoft.

    • Nie można użyć opcji PASSWORD .

  • Domyślnie po pominięciu klauzuli FROM EXTERNAL PROVIDER tworzony jest zwykły identyfikator logowania SQL.

  • Identyfikatory logowania entra firmy Microsoft są widoczne w programie sys.server_principalsz ustawioną E wartością kolumny typu na wartość i type_desc ustawioną na EXTERNAL_LOGIN dla logowań mapowanych na użytkowników usługi Microsoft Entra lub wartości kolumny typu ustawionej X na wartość i type_desc ustawioną na wartość EXTERNAL_GROUP dla logowań mapowanych na grupy firmy Microsoft Entra.

  • Aby zapoznać się ze skryptem służącym do transferu identyfikatorów logowania, zobacz How to transfer the logins and the passwords between instances of SQL Server 2005 and SQL Server 2008 (Jak przenieść identyfikatory logowania i hasła między wystąpieniami programu SQL Server 2005 i programem SQL Server 2008).

  • Utworzenie identyfikatora logowania automatycznie włącza nowe logowanie i przyznaje identyfikatorowi logowania uprawnienia CONNECT SQL na poziomie serwera.

Ważne

Aby uzyskać informacje na temat pracy z nazwami logowania i użytkownikami w usłudze Azure SQL Database, zobacz Zarządzanie identyfikatorami logowania w usłudze Azure SQL Database.

Identyfikatory logowania i uprawnienia

Tylko identyfikator logowania podmiotu zabezpieczeń na poziomie serwera (utworzony przez proces aprowizacji) lub członkowie securityadmin roli lub sysadmin bazy danych w master bazie danych mogą tworzyć nowe identyfikatory logowania. Aby uzyskać więcej informacji, zobacz roleServer-Level i ALTER SERVER ROLE.

Domyślnie standardowe uprawnienie przyznane nowo utworzonemu logowaniu firmy Microsoft Entra w programie master to: CONNECT SQL and VIEW ANY DATABASE (POŁĄCZ SQL i WYŚWIETL DOWOLNĄ BAZĘ DANYCH).

Identyfikatory logowania usługi SQL Managed Instance

  • Musi mieć uprawnienie ALTER ANY LOGIN na serwerze lub członkostwo w jednej ze stałych ról securityadmin serwera lub sysadmin. Tylko konto Microsoft Entra z uprawnieniem ALTER ANY LOGIN na serwerze lub członkostwem w jednej z tych ról może wykonać polecenie create.

  • Jeśli identyfikator logowania jest podmiotem zabezpieczeń SQL, tylko identyfikatory logowania, które są częścią sysadmin roli, mogą użyć polecenia create, aby utworzyć identyfikatory logowania dla konta Microsoft Entra.

  • Musi być członkiem tej samej dzierżawy usługi Microsoft Entra co usługa Azure SQL Managed Instance.

Po utworzeniu identyfikatora logowania

Po utworzeniu identyfikatora logowania identyfikator logowania może nawiązać połączenie z wystąpieniem zarządzanym, ale ma tylko uprawnienia przyznane roli publicznej . Rozważ wykonanie niektórych z następujących działań.

  • Aby utworzyć użytkownika na podstawie identyfikatora logowania firmy Microsoft Entra, zobacz CREATE USER (TWORZENIE UŻYTKOWNIKA).

  • Aby udzielić uprawnień użytkownikowi w bazie danych, użyj ALTER SERVER ROLE ... ADD MEMBER instrukcji , aby dodać użytkownika do jednej z wbudowanych ról bazy danych lub roli niestandardowej albo przyznać użytkownikowi uprawnienia bezpośrednio przy użyciu instrukcji GRANT . Aby uzyskać więcej informacji, zobacz Role nieadministratora, Dodatkowe role administracyjne na poziomie serwera, ALTER SERVER ROLE i instrukcja GRANT .

  • Aby udzielić uprawnień dla całego serwera, utwórz użytkownika bazy danych w master bazie danych i użyj instrukcji ALTER SERVER ROLE ... ADD MEMBER , aby dodać użytkownika do jednej z ról serwera administracyjnego. Aby uzyskać więcej informacji, zobacz Server-Level Role i ALTER SERVER ROLE oraz Role serwera.

    • Użyj następującego polecenia, aby dodać sysadmin rolę do logowania firmy Microsoft Entra: ALTER SERVER ROLE sysadmin ADD MEMBER [MS_Entra_login]
  • Użyj instrukcji GRANT , aby udzielić uprawnień na poziomie serwera do nowego identyfikatora logowania lub roli zawierającej identyfikator logowania. Aby uzyskać więcej informacji, zobacz GRANT.

Ograniczenia

  • Ustawienie nazwy logowania entra firmy Microsoft zamapowanego na grupę Entra firmy Microsoft, ponieważ właściciel bazy danych nie jest obsługiwany.

  • Personifikacja logowań firmy Microsoft entra przy użyciu innych podmiotów zabezpieczeń firmy Microsoft jest obsługiwana, na przykład klauzula EXECUTE AS .

  • Tylko podmioty zabezpieczeń serwera (identyfikatory logowania), które są częścią sysadmin roli, mogą wykonywać następujące operacje przeznaczone dla podmiotów zabezpieczeń firmy Microsoft:

    • WYKONAJ JAKO UŻYTKOWNIK
    • WYKONAJ JAKO LOGOWANIE
  • Zewnętrzni (goście) zaimportowani z innego katalogu firmy Microsoft Entra nie mogą być bezpośrednio skonfigurowani jako administratorzy usługi Microsoft Entra dla usługi SQL Managed Instance przy użyciu witryny Azure Portal. Zamiast tego dołącz użytkownika zewnętrznego do grupy z możliwością przypisania roli i skonfiguruj grupę jako administrator wystąpienia. Możesz użyć programu PowerShell lub interfejsu wiersza polecenia platformy Azure, aby ustawić poszczególnych użytkowników-gości jako administratora wystąpienia.

  • Identyfikatory logowania nie są replikowane do wystąpienia pomocniczego w grupie trybu failover. Identyfikatory logowania są zapisywane w master bazie danych, czyli systemowej bazie danych, a w związku z tym nie są replikowane geograficznie. Aby rozwiązać ten problem, identyfikatory logowania muszą być tworzone przy użyciu tego samego identyfikatora SID w wystąpieniu pomocniczym.

-- Code to create login on the secondary instance
CREATE LOGIN foo WITH PASSWORD = '<enterStrongPasswordHere>', SID = <login_sid>;

Przykłady

Odp. Tworzenie logowania przy użyciu hasła

Poniższy przykład tworzy identyfikator logowania dla określonego użytkownika i przypisuje hasło.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Tworzenie identyfikatora logowania na podstawie identyfikatora SID

Poniższy przykład najpierw tworzy identyfikator logowania uwierzytelniania programu SQL Server i określa identyfikator SID logowania.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

Moje zapytanie zwraca 0x241C11948AEEB749B0D22646DB1A19F2 jako identyfikator SID. Zapytanie zwróci inną wartość. Poniższe instrukcje usuwają identyfikator logowania, a następnie ponownie utwórz identyfikator logowania. Użyj identyfikatora SID z poprzedniego zapytania.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

C. Tworzenie identyfikatora logowania dla użytkownika entra firmy Microsoft

Poniższy przykład tworzy identyfikator logowania dla konta joe@contoso.onmicrosoft.com Microsoft Entra, które istnieje w dzierżawie o nazwie contoso.

CREATE LOGIN [joe@contoso.onmicrosoft.com] FROM EXTERNAL PROVIDER

GO

D. Tworzenie logowania dla federacyjnego konta Microsoft Entra

Poniższy przykład tworzy identyfikator logowania dla federacyjnego konta bob@contoso.com Microsoft Entra, które istnieje w dzierżawie o nazwie contoso. Użytkownik bob może być również użytkownikiem-gościem.

CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
GO

E. Tworzenie identyfikatora logowania dla grupy Microsoft Entra

W poniższym przykładzie zostanie utworzona nazwa logowania dla grupy mygroup firmy Microsoft, która istnieje w dzierżawie contoso.

CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
GO

F. Tworzenie identyfikatora logowania dla aplikacji Firmy Microsoft Entra

Poniższy przykład tworzy identyfikator logowania dla aplikacji Microsoft Entra, która istnieje w dzierżawie contoso.

CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER

G. Sprawdzanie nowo dodanych identyfikatorów logowania

Aby sprawdzić nowo dodane dane logowania, wykonaj następujące polecenie języka T-SQL:

SELECT *
FROM sys.server_principals;
GO

* Azure Synapse
Analiza *

 

Azure Synapse Analytics

Składnia

-- Syntax for Azure Synapse Analytics
CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

Argumenty (w programowaniu)

Uwaga / Notatka

Podmioty zabezpieczeń serwera Microsoft Entra (identyfikatory logowania) są obecnie dostępne w wersji zapoznawczej.

W przypadku użycia z klauzulą FROM EXTERNAL PROVIDER identyfikator logowania określa podmiot zabezpieczeń firmy Microsoft, który jest użytkownikiem, grupą lub aplikacją firmy Microsoft Entra. W przeciwnym razie identyfikator logowania reprezentuje nazwę utworzonego identyfikatora logowania SQL.

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

OD DOSTAWCY ZEWNĘTRZNEGO

Określa, że identyfikator logowania dotyczy uwierzytelniania entra firmy Microsoft.

login_name

Określa nazwę utworzonego identyfikatora logowania. Usługa SQL Analytics w usłudze Azure Synapse obsługuje tylko identyfikatory logowania SQL. Aby utworzyć konta dla użytkowników usługi Microsoft Entra, użyj instrukcji CREATE USER .

HASŁO ='password'

Określa hasło do tworzonego identyfikatora logowania SQL. Użyj silnego hasła. Aby uzyskać więcej informacji, zobacz Silne hasła i Zasady haseł. Począwszy od programu SQL Server 2012 (11.x), przechowywane informacje o hasłach są obliczane przy użyciu algorytmu SHA-512 hasła.

W hasłach jest rozróżniana wielkość liter. Hasła powinny mieć długość co najmniej ośmiu znaków i nie mogą przekraczać 128 znaków. Hasła mogą zawierać znaki a-z, A-Z, 0-9 i większość znaków niealfanumerycznych. Hasła nie mogą zawierać pojedynczych cudzysłowów ani login_name.

SID = sid

Służy do ponownego tworzenia identyfikatora logowania. Dotyczy tylko identyfikatorów logowania uwierzytelniania programu SQL Server, a nie identyfikatorów logowania uwierzytelniania systemu Windows. Określa identyfikator SID nowego logowania uwierzytelniania programu SQL Server. Jeśli ta opcja nie jest używana, program SQL Server automatycznie przypisuje identyfikator SID. Struktura identyfikatora SID zależy od wersji programu SQL Server. W przypadku usługi SQL Analytics jest to literał 32 bajtów (binary(32)) składający się z 0x01060000000000640000000000000000 plus 16 bajtów reprezentujących identyfikator GUID. Na przykład SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.

Uwagi

Logowania

Instrukcja CREATE LOGIN musi być jedyną instrukcją w partii.

Podczas nawiązywania połączenia z usługą Azure Synapse przy użyciu narzędzi takich jak sqlcmd należy dołączyć nazwę serwera usługi SQL Analytics do nazwy logowania w parametrach połączenia przy użyciu <notacji serwera logowania>@.<> Jeśli na przykład identyfikator logowania to login1 i w pełni kwalifikowana nazwa serwera SQL Analytics to servername.database.windows.net, parametr nazwy użytkownika parametrów połączenia powinien mieć wartość login1@servername. Ponieważ łączna długość parametru nazwy użytkownika wynosi 128 znaków, login_name jest ograniczona do 127 znaków pomniejszonej o długość nazwy serwera. W tym przykładzie może zawierać tylko 117 znaków, login_name ponieważ servername ma 10 znaków.

Aby utworzyć identyfikator logowania, musisz mieć połączenie z bazą master danych.

Reguły programu SQL Server umożliwiają utworzenie logowania uwierzytelniania programu SQL Server w formacie <loginname>@<servername>. Jeśli serwer usługi SQL Database to myazureserver , a identyfikator logowania to myemail@contoso.com, musisz podać identyfikator logowania jako myemail@contoso.com@myazureserver.

Dane logowania wymagane do uwierzytelnienia połączenia i reguł zapory na poziomie serwera są tymczasowo buforowane w każdej bazie danych. Ta pamięć podręczna jest okresowo odświeżana. Aby wymusić odświeżenie pamięci podręcznej uwierzytelniania i upewnić się, że baza danych ma najnowszą wersję tabeli logins, wykonaj DBCC FLUSHAUTHCACHE.

Aby uzyskać więcej informacji na temat identyfikatorów logowania, zobacz Managing Databases and Logins (Zarządzanie bazami danych i identyfikatorami logowania).

Uprawnienia

Tylko identyfikator logowania podmiotu zabezpieczeń na poziomie serwera (utworzony przez proces aprowizacji) lub członkowie loginmanager roli bazy danych w master bazie danych mogą tworzyć nowe identyfikatory logowania. Aby uzyskać więcej informacji, zobacz roleServer-Level i ALTER SERVER ROLE.

Po utworzeniu identyfikatora logowania

Po utworzeniu identyfikatora logowania identyfikator logowania może nawiązać połączenie z usługą Azure Synapse, ale ma tylko uprawnienia przyznane roli publicznej . Rozważ wykonanie niektórych z następujących działań.

  • Aby nawiązać połączenie z bazą danych, utwórz użytkownika bazy danych na potrzeby logowania. Aby uzyskać więcej informacji, zobacz CREATE USER (TWORZENIE UŻYTKOWNIKA).

  • Aby udzielić uprawnień użytkownikowi w bazie danych, użyj ALTER SERVER ROLE ... ADD MEMBER instrukcji , aby dodać użytkownika do jednej z wbudowanych ról bazy danych lub roli niestandardowej albo przyznać użytkownikowi uprawnienia bezpośrednio przy użyciu instrukcji GRANT . Aby uzyskać więcej informacji, zobacz Role nieadministratora, Dodatkowe role administracyjne na poziomie serwera, ALTER SERVER ROLE i instrukcja GRANT .

  • Aby udzielić uprawnień dla całego serwera, utwórz użytkownika bazy danych w master bazie danych i użyj instrukcji ALTER SERVER ROLE ... ADD MEMBER , aby dodać użytkownika do jednej z ról serwera administracyjnego. Aby uzyskać więcej informacji, zobacz Server-Level Role i ALTER SERVER ROLE oraz Role serwera.

  • Użyj instrukcji GRANT , aby udzielić uprawnień na poziomie serwera do nowego identyfikatora logowania lub roli zawierającej identyfikator logowania. Aby uzyskać więcej informacji, zobacz GRANT.

Przykłady

Odp. Tworzenie logowania przy użyciu hasła

Poniższy przykład tworzy identyfikator logowania dla określonego użytkownika i przypisuje hasło.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Tworzenie identyfikatora logowania na podstawie identyfikatora SID

Poniższy przykład najpierw tworzy identyfikator logowania uwierzytelniania programu SQL Server i określa identyfikator SID logowania.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

Moje zapytanie zwraca 0x241C11948AEEB749B0D22646DB1A19F2 jako identyfikator SID. Zapytanie zwróci inną wartość. Poniższe instrukcje usuwają identyfikator logowania, a następnie ponownie utwórz identyfikator logowania. Użyj identyfikatora SID z poprzedniego zapytania.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

* Analiza
System platformy (PDW) *

 

Platforma analityczna

Składnia

-- Syntax for Analytics Platform System
CREATE LOGIN loginName { WITH <option_list1> | FROM WINDOWS }

<option_list1> ::=
    PASSWORD = { 'password' } [ MUST_CHANGE ]
    [ , <option_list> [ ,... ] ]

<option_list> ::=
      CHECK_EXPIRATION = { ON | OFF}
    | CHECK_POLICY = { ON | OFF}

Argumenty (w programowaniu)

login_name

Określa nazwę utworzonego identyfikatora logowania. Istnieją cztery typy identyfikatorów logowania: identyfikatory logowania programu SQL Server, identyfikatory logowania systemu Windows, identyfikatory logowania mapowane przy użyciu certyfikatu i logowania mapowane przy użyciu klucza asymetrycznego. Podczas tworzenia identyfikatorów logowania mapowanych z konta domeny systemu Windows należy użyć nazwy logowania użytkownika w wersji wstępnej systemu Windows 2000 w formacie [<domainName>\<login_name>]. Nie można użyć nazwy UPN w formacie login_name@DomainName. Przykład można znaleźć w przykładzie D w dalszej części tego artykułu. Identyfikatory logowania uwierzytelniania są typu sysname i muszą być zgodne z regułami identyfikatorów i nie mogą zawierać elementu "\". Identyfikatory logowania systemu Windows mogą zawierać element "\". Identyfikatory logowania oparte na użytkownikach usługi Active Directory są ograniczone do nazw mniejszych niż 21 znaków.

PASSWORD ='password'

Dotyczy tylko identyfikatorów logowania programu SQL Server. Określa hasło do tworzonego identyfikatora logowania. Użyj silnego hasła. Aby uzyskać więcej informacji, zobacz Silne hasła i Zasady haseł. Począwszy od programu SQL Server 2012 (11.x), przechowywane informacje o hasłach są obliczane przy użyciu algorytmu SHA-512 hasła.

W hasłach jest rozróżniana wielkość liter. Hasła powinny mieć długość co najmniej ośmiu znaków i nie mogą przekraczać 128 znaków. Hasła mogą zawierać znaki a-z, A-Z, 0-9 i większość znaków niealfanumerycznych. Hasła nie mogą zawierać pojedynczych cudzysłowów ani login_name.

MUST_CHANGE

Dotyczy tylko identyfikatorów logowania programu SQL Server. Jeśli ta opcja jest dołączona, program SQL Server monituje użytkownika o nowe hasło przy pierwszym użyciu nowego logowania.

CHECK_EXPIRATION = { ON | WYŁ. }

Dotyczy tylko identyfikatorów logowania programu SQL Server. Określa, czy zasady wygasania haseł powinny być wymuszane podczas tego logowania. Wartość domyślna to OFF.

CHECK_POLICY = { ON | WYŁ. }

Dotyczy tylko identyfikatorów logowania programu SQL Server. Określa, że zasady haseł systemu Windows komputera, na którym działa program SQL Server, powinny być wymuszane na tym logowaniu. Wartość domyślna to WŁĄCZONE.

Jeśli zasady systemu Windows wymagają silnych haseł, hasła muszą zawierać co najmniej trzy z następujących czterech cech:

  • Wielkie litery (A-Z).
  • Małe litery (a-z).
  • Cyfra (0–9).
  • Jeden z znaków nieliczbowych, takich jak spacja, _, @, @, *, ^, %, !, $, #lub &.

Okna

Określa, że nazwa logowania ma być mapowana na dane logowania systemu Windows.

Uwagi

  • W hasłach jest rozróżniana wielkość liter.
  • Jeśli określono MUST_CHANGE, CHECK_EXPIRATION i CHECK_POLICY muszą być ustawione na WARTOŚĆ WŁĄCZONE. W przeciwnym razie instrukcja zakończy się niepowodzeniem.
  • Kombinacja CHECK_POLICY = OFF i CHECK_EXPIRATION = ON nie jest obsługiwana.
  • Gdy CHECK_POLICY jest ustawiona na WARTOŚĆ WYŁĄCZONE, lockout_time jest resetowany, a CHECK_EXPIRATION jest ustawiona na WARTOŚĆ OFF.

Ważne

CHECK_EXPIRATION i CHECK_POLICY są wymuszane tylko w systemie Windows Server 2003 i nowszych wersjach. Aby uzyskać więcej informacji, zobacz politykę haseł.

Uprawnienia

Tylko użytkownicy z uprawnieniem ALTER ANY LOGIN na serwerze lub członkostwem w stałej roli serwera securityadmin mogą tworzyć identyfikatory logowania. Aby uzyskać więcej informacji, zobacz roleServer-Level i ALTER SERVER ROLE.

Po utworzeniu identyfikatora logowania

Po utworzeniu logowania identyfikator logowania może nawiązać połączenie z usługą Azure Synapse Analytics, ale ma tylko uprawnienia przyznane roli publicznej . Rozważ wykonanie niektórych z następujących działań.

  • Aby nawiązać połączenie z bazą danych, utwórz użytkownika bazy danych na potrzeby logowania. Aby uzyskać więcej informacji, zobacz CREATE USER (TWORZENIE UŻYTKOWNIKA).
  • Utwórz rolę serwera zdefiniowaną przez użytkownika przy użyciu funkcji CREATE SERVER ROLE. Służy ALTER SERVER ROLE ... ADD MEMBER do dodawania nowego identyfikatora logowania do roli serwera zdefiniowanego przez użytkownika. Aby uzyskać więcej informacji, zobacz CREATE SERVER ROLE (TWORZENIE ROLI SERWERA ) i ALTER SERVER ROLE (ALTER SERVER ROLE).
  • Użyj sp_addsrvrolemember polecenia , aby dodać identyfikator logowania do stałej roli serwera. Aby uzyskać więcej informacji, zobacz Server-Level Role i sp_addsrvrolemember.
  • Użyj instrukcji GRANT , aby udzielić uprawnień na poziomie serwera do nowego identyfikatora logowania lub roli zawierającej identyfikator logowania. Aby uzyskać więcej informacji, zobacz GRANT.

Przykłady

G. Tworzenie logowania do uwierzytelniania programu SQL Server przy użyciu hasła

Poniższy przykład tworzy identyfikator logowania Mary7 przy użyciu hasła A2c3456.

CREATE LOGIN Mary7 WITH PASSWORD = 'A2c3456$#' ;

H. Korzystanie z opcji

Poniższy przykład tworzy identyfikator logowania Mary8 przy użyciu hasła i niektórych opcjonalnych argumentów.

CREATE LOGIN Mary8 WITH PASSWORD = 'A2c3456$#' MUST_CHANGE,
CHECK_EXPIRATION = ON,
CHECK_POLICY = ON;

Ja. Tworzenie logowania na podstawie konta domeny systemu Windows

Poniższy przykład tworzy identyfikator logowania z konta domeny systemu Windows o nazwie Mary w domenie Contoso .

CREATE LOGIN [Contoso\Mary] FROM WINDOWS;
GO