CREATE LOGIN (Transact-SQL)
Создает имя входа для баз данных SQL Server, База данных SQL Azure, Управляемый экземпляр SQL Azure, Azure Synapse Analytics или System Analytics. Выберите одну из следующих вкладок для синтаксиса, аргументов, примечаний, разрешений и примеров для конкретной версии.
CREATE LOGIN участвует в транзакциях. Если откат транзакции CREATE LOGIN выполняется в рамках транзакции, для создания имени для входа также выполняется откат. При выполнении в транзакции созданное имя входа не может использоваться до фиксации транзакции.
Примечание.
Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).
Дополнительные сведения о соглашениях о синтаксисе см. в статье Соглашения о синтаксисе в Transact-SQL.
Выбор продукта
В следующей строке выберите название нужного продукта, и отобразится информация только об этом продукте.
* SQL Server *
SQL Server
Синтаксис
-- 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
| CERTIFICATE certname
| ASYMMETRIC KEY asym_key_name
<windows_options> ::=
DEFAULT_DATABASE = database
| DEFAULT_LANGUAGE = language
Аргументы
login_name
Указывает имя пользователя для создаваемого имени входа. Существует пять типов имен входа: имена входа SQL Server, имена входа Windows, имена входа Microsoft Entra, имена входа, сопоставленные с сертификатом, и асимметричные имена входа, сопоставленные с ключом.
При создании имен входа, сопоставленных с учетной записью домена Windows, необходимо использовать имя входа в формате [<domainName>\<login_name>]. Нельзя использовать имя участника-участника в формате login_name@DomainName. Пример E см. далее в этой статье. Имена входа проверки подлинности — это имя sysname и должны соответствовать правилам идентификаторов и не могут содержать обратную косую черту (). Имена входа Windows могут содержать символы «\». Имена входа на основе пользователей Active Directory ограничены именами менее 21 символов.
При использовании предложения FROM EXTERNAL PROVIDER имя входа должно соответствовать отображаемого имени существующего субъекта Microsoft Entra в том же клиенте, на котором включен экземпляр SQL. Пользователи, группы и приложения Microsoft Entra можно использовать для создания имен входа.
PASSWORD ='password'
Применяется только к именам входа SQL Server. Задает пароль для создаваемого имени входа. Выбирайте надежные пароли. Дополнительные сведения см. в статьях Надежные пароли и Политика паролей. Начиная с SQL Server 2012 (11.x), сохраненные сведения о пароле вычисляются с помощью SHA-512 "соленого" пароля.
В паролях учитывается регистр символов. Пароли всегда должны содержать не менее восьми символов и не могут превышать 128 символов. Пароли могут содержать символы a-z, A-Z, 0-9 и большинство небуквенно-цифровых символов. Пароли не могут содержать одинарные кавычки или login_name.
PASSWORD = hashed_password
Применимо только к ключевому слову HASHED. Указывает хэшированное значение пароля для создаваемого имени входа.
HASHED
Применяется только к именам входа SQL Server. Указывает, что пароль, введенный после аргумента PASSWORD, уже хэширован. Если этот параметр не выбран, строка, введенная как пароль, будет хэширована перед сохранением в базе данных. Данный параметр может быть применен только для миграции баз данных с одного сервера на другой. Не используйте параметр HASHED для создания новых имен входа. Параметр HASHED нельзя использовать с хэшами, созданными SQL 7 или более ранней версией.
MUST_CHANGE
Применяется только к именам входа SQL Server. Если этот параметр задан, то при первом использовании нового имени входа SQL Server запрашивает новый пароль.
CREDENTIAL =credential_name
Имя учетных данных для сопоставления с новым именем входа SQL Server. Учетные данные уже должны существовать на сервере. В настоящее время этот параметр только связывает учетные данные с именем входа. Учетные данные нельзя сопоставить с именем входа System Администратор istrator (sa).
SID = sid
Используется для повторного создания имени входа. Применяется только к именам входа проверки подлинности SQL Server, но не относится к именам входа проверки подлинности Windows. Указывает идентификатор SID нового имени входа проверки подлинности SQL Server. Если этот параметр не используется, SQL Server назначает идентификатор SID автоматически. Структура идентификатора SID зависит от версии SQL Server. Идентификатор SID имени входа SQL Server: 16-байтовое (binary(16)) литеральное значение, основанное на GUID. Например, SID = 0x14585E90117152449347750164BA00A7
.
DEFAULT_DATABASE =база данных
База данных по умолчанию, связываемая с именем входа. Если этот параметр не включен, для базы данных по умолчанию задано значение master
.
DEFAULT_LANGUAGE =language
Язык по умолчанию, назначаемый имени входа. Если этот параметр не включен, язык по умолчанию устанавливается на текущий язык по умолчанию сервера. При смене языка по умолчанию для сервера язык по умолчанию имени входа не меняется.
CHECK_EXPIRATION = { ON | OFF }
Применяется только к именам входа SQL Server. Указывает, должна ли политика истечения срока действия паролей принудительно применяться к этому имени входа. Значение по умолчанию — OFF.
CHECK_POLICY = { ON | OFF }
Применяется только к именам входа SQL Server. Указывает, что политики паролей Windows компьютера, на котором работает SQL Server, должны принудительно применяться к этому имени входа. Значение по умолчанию — ON.
Если политика Windows требует надежных паролей, то пароль должен обладать по крайней мере тремя из следующих четырех качеств:
- Наличие символов верхнего регистра (A-Z).
- Наличие строчных символов (a-z).
- Числа (0-9).
- Один из неэлементных символов, таких как пробел, _, @, @, ^, %, !, $, #или &.
ОКНА
Имя входа сопоставлено с именем входа Windows.
FROM EXTERNAL PROVIDER
Указывает, что имя входа сопоставляется с субъектом Microsoft Entra. Этот параметр доступен для SQL Server 2022 с поддержкой Arc и более поздних версий. Дополнительные сведения см. в разделе проверки подлинности Microsoft Entra для SQL Server
CERTIFICATE certname
Имя сертификата, связываемого с данным именем входа. Этот сертификат уже должен происходить в master
базе данных.
ASYMMETRIC KEY asym_key_name
Имя асимметричного ключа, связываемого с данным именем входа. Этот ключ уже должен происходить в master
базе данных.
Замечания
- В паролях учитывается регистр символов.
- Предварительное кэширование паролей поддерживается только при создании имен входа SQL Server.
- Если
MUST_CHANGE
задано, необходимо задатьON
значение CHECK_EXPIRATION и CHECK_POLICY. В противном случае выполнение инструкции приведет к ошибке. - Сочетание
CHECK_POLICY = OFF
иCHECK_EXPIRATION = ON
не поддерживается. - Если для CHECK_POLICY задано
OFF
значение , lockout_time сбрасывается иCHECK_EXPIRATION
имеетOFF
значение .
Внимание
CHECK_EXPIRATION и CHECK_POLICY применяются только в Windows Server 2003 и более поздних версиях. Дополнительные сведения см. в разделе Политика паролей.
- Имена входа, созданные из сертификатов или асимметричных ключей, используются только для подписи кода. Их нельзя использовать для подключения к SQL Server. Вы можете создать имя входа из сертификата или асимметричного ключа только в том случае, если сертификат или асимметричный ключ уже существует
master
. - Скрипт для передачи имен входа см. в разделе Способы передачи имен входа и паролей между экземплярами SQL Server 2005 и SQL Server 2008.
- При создании имени входа оно автоматически включается, и ему предоставляется разрешение CONNECT SQL уровня сервера.
- Для разрешения доступа режим проверки подлинности сервера должен соответствовать типу имени входа.
- Сведения о проектировании системы разрешений см. в статье Getting Started with Database Engine Permissions.
Разрешения
- Создавать имена входа могут только пользователи с разрешением ALTER ANY LOGIN на сервере или имеющие членство в предопределенной роли сервера securityadmin. Дополнительные сведения см. в разделах Роли уровня сервера и ALTER SERVER ROLE.
- Если используется параметр CREDENTIAL , также необходимо разрешение ALTER ANY CREDENTIAL на сервере.
Разрешения для SQL Server 2022 и более поздних версий
Требуется разрешение CREATE LOGIN на сервере или членство в предопределенных роли сервера ##MS_LoginManager## .
После создания имени входа
Созданное имя входа может подключаться к SQL Server, но имеет разрешения только для роли public. Попробуйте выполнить некоторые из приведенных ниже действий.
- Чтобы подключиться к базе данных, создайте пользователя базы данных для имени входа. Дополнительные сведения можно найти в статье CREATE USER (Transact-SQL).
- Создайте определяемую пользователем роль сервера с помощью CREATE SERVER ROLE. Используйте
ALTER SERVER ROLE ... ADD MEMBER
для добавления нового имени входа в определяемую пользователем роль сервера. Дополнительные сведения см. в статьях CREATE SERVER ROLE и ALTER SERVER ROLE. - Используйте
sp_addsrvrolemember
для добавления имени входа в фиксированную роль сервера. Дополнительные сведения см. в разделе Роли уровня сервера и sp_addsrvrolemember. - Воспользуйтесь инструкцией GRANT, чтобы предоставить разрешения уровня сервера новому имени входа или роли, содержащей это имя входа. Дополнительные сведения см. в статье GRANT.
Примеры
А. Создание имени входа с паролем
В следующем примере создается имя входа для конкретного пользователя и назначается пароль.
CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO
B. Создание имени входа с паролем, который необходимо изменить
В следующем примере создается имя входа для конкретного пользователя и назначается пароль. Параметр MUST_CHANGE
требует, чтобы пользователь изменил этот пароль при первом подключении к серверу.
Область применения: SQL Server 2008 (10.0.x) и более поздних версий.
CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>'
MUST_CHANGE, CHECK_EXPIRATION = ON;
GO
Примечание.
Невозможно использовать параметр MUST_CHANGE, если параметр CHECK_EXPIRATION имеет значение OFF.
C. Создание имени входа, сопоставленного с учетными данными
В следующем примере создается имя входа для конкретного пользователя с использованием идентификатора пользователя. Это имя входа сопоставляется с учетными данными.
Область применения: SQL Server 2008 (10.0.x) и более поздних версий.
CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>',
CREDENTIAL = <credentialName>;
GO
D. Создание имени входа из сертификата
В следующем примере создается имя входа для конкретного пользователя из сертификата master
.
Область применения: SQL Server 2008 (10.0.x) и более поздних версий.
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
Е. Создание имени входа из учетной записи домена Windows
В следующем примере имя входа создается на основе учетной записи домена Windows.
Область применения: SQL Server 2008 (10.0.x) и более поздних версий.
CREATE LOGIN [<domainName>\<login_name>] FROM WINDOWS;
GO
F. Создание имени входа из идентификатора безопасности
В следующем примере создается имя входа с проверкой подлинности SQL Server и определяется его SID.
CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';
SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO
Наш запрос возвращает идентификатор SID 0x241C11948AEEB749B0D22646DB1A19F2. Ваш запрос вернет другое значение. Следующие выражения удаляют имя входа, а затем повторно создают имя входа. Используйте SID из предыдущего запроса.
DROP LOGIN TestLogin;
GO
CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;
SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO
G. Создание имени входа с несколькими аргументами
В следующем примере показано, как объединить несколько аргументов с помощью запятых между аргументами.
CREATE LOGIN [MyUser]
WITH PASSWORD = 'MyPassword',
DEFAULT_DATABASE = MyDatabase,
CHECK_POLICY = OFF,
CHECK_EXPIRATION = OFF ;
H. Создание имени входа SQL с хэшированных паролем
В следующем примере показано, как создать имена для входа SQL с тем же паролем, что и у существующих имен входа, созданных в сценарии миграции. Первым шагом является получение хэша пароля из существующих имен для входа на сервере базы данных-источника. Затем для создания имени для входа на новом сервере базы данных будет использоваться тот же хэш. При этом новое имя для входа будет иметь тот же пароль, что и на старом сервере.
-- 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 statemnt 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;
I. Создание имени входа для пользователя Microsoft Entra
В следующем примере создается имя входа для учетной записи joe@contoso.onmicrosoft.com Microsoft Entra, которая существует в клиенте Microsoft Entra с именем contoso.
CREATE LOGIN [joe@contoso.onmicrosoft.com] FROM EXTERNAL PROVIDER
GO
J. Создание имени входа для федеративной учетной записи Microsoft Entra
В следующем примере создается имя входа для федеративной учетной записи bob@contoso.com Microsoft Entra, которая существует в клиенте с именем contoso. Пользователь Боб также может быть гостем.
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
GO
K. Создание имени входа для группы Microsoft Entra
В следующем примере создается имя входа для группы Microsoft Entra group mygroup , которая существует в клиенте contoso.
CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
GO
L. Создание имени входа для приложения Microsoft Entra
В следующем примере создается имя входа для приложения Microsoft Entra myapp , существующего в клиенте contoso.
CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER
Связанный контент
* База данных SQL Azure *
База данных SQL
Дополнительные сведения о подключении и авторизации к База данных SQL Azure см. в следующем разделе:
- параметры Подключение параметров База данных SQL Azure
- Авторизация доступа к Базе данных SQL, Управляемому экземпляру SQL и Azure Synapse Analytics
Синтаксис
-- 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 ]
Аргументы
login_name
Примечание.
Субъекты сервера Microsoft Entra (имена входа) в настоящее время находятся в общедоступной предварительной версии для База данных SQL Azure.
При использовании с предложением FROM EXTERNAL PROVIDER имя входа указывает субъект Microsoft Entra, который является пользователем, группой или приложением Microsoft Entra. В противном случае оно представляет созданное имя входа SQL.
Пользователи и субъекты-службы Microsoft Entra, которые являются членами более 2048 групп безопасности Microsoft Entra, не поддерживаются для входа в базу данных в База данных SQL, Управляемый экземпляр SQL или Azure Synapse.
FROM EXTERNAL PROVIDER
Указывает, что имя входа предназначено для проверки подлинности Microsoft Entra.
WITH OBJECT_ID = objectid
Указывает идентификатор объекта Microsoft Entra. OBJECT_ID
Если задано, login_name не требуется для сопоставления отображаемого имени Microsoft Entra. Login_name должно быть уникальным именем в sys.server_principals
представлении и соответствовать всем другим sysname
ограничениям. Дополнительные сведения об использовании WITH OBJECT_ID
параметра см. в разделе "Имена входа Microsoft Entra" и пользователей с неуникными отображаемыми именами.
Примечание.
Если отображаемое имя субъекта-службы не является дубликатом, следует использовать значение по умолчанию или CREATE USER
инструкцииCREATE LOGIN
. Расширение WITH OBJECT_ID
находится в общедоступной предварительной версии и является элементом устранения неполадок, реализованным для использования с неуникными субъектами-службами. Использование его с уникальным субъектом-службой не рекомендуется. WITH OBJECT_ID
Использование расширения для субъекта-службы без добавления суффикса будет выполнено успешно, но не будет очевидно, какой субъект-служба создан для входа или пользователя. Рекомендуется создать псевдоним с помощью суффикса для уникальной идентификации субъекта-службы. Расширение WITH OBJECT_ID
не поддерживается для SQL Server.
PASSWORD ="пароль"
Указывает пароль для создаваемого имени входа SQL. Выбирайте надежные пароли. Дополнительные сведения см. в статьях Надежные пароли и Политика паролей. Начиная с SQL Server 2012 (11.x), сохраненные сведения о пароле вычисляются с помощью SHA-512 "соленого" пароля.
В паролях учитывается регистр символов. Пароли всегда должны содержать не менее восьми символов и не могут превышать 128 символов. Пароли могут содержать символы a-z, A-Z, 0-9 и большинство небуквенно-цифровых символов. Пароли не могут содержать одинарные кавычки или login_name.
SID = sid
Используется для повторного создания имени входа. Применяется только к именам входа проверки подлинности SQL Server, но не относится к именам входа проверки подлинности Windows. Указывает идентификатор SID нового имени входа проверки подлинности SQL Server. Если этот параметр не используется, SQL Server автоматически назначает идентификатор безопасности. Структура идентификатора SID зависит от версии SQL Server. Для базы данных SQL это 32-байтовый (binary(32)) литерал, состоящий из 0x01060000000000640000000000000000
плюс 16 байт, представляющих GUID. Например, SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7
.
Замечания
- В паролях учитывается регистр символов.
- При создании имени входа оно автоматически включается, и ему предоставляется разрешение CONNECT SQL уровня сервера.
Внимание
Сведения о работе с именами входа и пользователями в базе данных SQL Azure см. в статье Управление именами входа в базе данных SQL Azure.
Имя входа
имена входа База данных SQL
Инструкция CREATE LOGIN должна быть единственной инструкцией в пакете.
В некоторых методах подключения к базе данных SQL, например sqlcmd, необходимо добавить имя сервера базы данных SQL к имени входа в строке подключения с помощью нотации <login>@<server>. Например, если имя входа — login1
, а полное имя сервера базы данных SQL —servername.database.windows.net
, то параметр username в строке подключения должен иметь вид login1@servername
. Так как общая длина параметра username составляет 128 символов, длина имени login_name ограничена до 127 символов минус длина имени сервера. В примере login_name
может иметь длину не более 117 символов, поскольку servername
имеет длину 10 символов.
В База данных SQL необходимо подключиться к master
базе данных с соответствующими разрешениями для создания имени входа. Дополнительные сведения см. в разделе Создание дополнительных имен входа и пользователей с правами администратора.
Правила SQL Server позволяют создать имя входа проверки подлинности SQL Server в формате <loginname>@<servername>. Если сервер Базы данных SQL — myazureserver, а имя входа — myemail@contoso.com, то необходимо указать имя входа в виде myemail@contoso.com@myazureserver.
В базе данных SQL данные имени входа необходимы для проверки подлинности подключения, и правила брандмауэра на уровне сервера временно кэшируются в каждой базе данных. Этот кэш периодически обновляется. Чтобы принудительно обновить кэш проверки подлинности и убедиться в том, что база данных содержит последнюю версию таблицы имен входа, выполните инструкцию DBCC FLUSHAUTHCACHE.
Разрешения
Только имя входа на уровне сервера (созданное процессом подготовки) или члены loginmanager
роли базы данных в master
базе данных могут создавать новые имена входа. Дополнительные сведения см. в разделе Создание дополнительных имен входа и пользователей с правами администратора.
Примеры
А. Создание имени входа с паролем
В следующем примере создается имя входа для конкретного пользователя и назначается пароль. Подключение к базам master
данных, а затем используйте следующий пример кода.
CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO
B. Создание имени входа из идентификатора безопасности
В следующем примере создается имя входа с проверкой подлинности SQL Server и определяется его SID. Подключение к базам master
данных, а затем используйте следующий пример кода.
CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';
SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO
Наш запрос возвращает идентификатор SID 0x241C11948AEEB749B0D22646DB1A19F2. Ваш запрос вернет другое значение. Следующие выражения удаляют имя входа, а затем повторно создают имя входа. Используйте SID из предыдущего запроса.
DROP LOGIN TestLogin;
GO
CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;
SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO
C. Создание имени входа с помощью учетной записи Microsoft Entra
В этом примере создается имя входа на логическом сервере SQL Azure с помощью учетных данных пользователя bob@contoso.com
, существующего в домене contoso
Microsoft Entra. Подключение к базам master
данных, а затем используйте следующий пример кода.
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO
D. Создание имени входа с псевдонимом с помощью идентификатора объекта
Псевдоним для login_name можно создать, указав идентификатор объекта субъекта-службы Microsoft Entra или группы. Подключение к базам master
данных, а затем используйте следующий пример кода.
CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER
WITH OBJECT_ID='4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx';
Дополнительные сведения о получении идентификатора объекта субъекта-службы см. в разделе "Объекты субъекта-службы" в идентификаторе Microsoft Entra.
Связанный контент
* Azure SQL
Управляемый экземпляр *
Управляемый экземпляр SQL Azure
Синтаксис
-- 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
Аргументы
login_name
При использовании с предложением FROM EXTERNAL PROVIDER имя входа указывает субъект Microsoft Entra, который является пользователем, группой или приложением Microsoft Entra. В противном случае оно представляет созданное имя входа SQL.
Пользователи и субъекты-службы Microsoft Entra, которые являются членами более 2048 групп безопасности Microsoft Entra, не поддерживаются для входа в базы данных в База данных SQL Azure, Управляемый экземпляр SQL Azure или Azure Synapse.
FROM EXTERNAL PROVIDER
Указывает, что имя входа предназначено для проверки подлинности Microsoft Entra.
WITH OBJECT_ID = objectid
Указывает идентификатор объекта Microsoft Entra. OBJECT_ID
Если задано, login_name может быть пользовательским псевдонимом, сформированным из исходного отображаемого имени субъекта с добавленным суффиксом. Login_name должно быть уникальным именем в sys.server_principals
представлении и соответствовать всем другим sysname
ограничениям. Дополнительные сведения об использовании WITH OBJECT_ID
параметра см. в разделе "Имена входа Microsoft Entra" и пользователей с неуникными отображаемыми именами.
Примечание.
Если отображаемое имя субъекта-службы не является дубликатом, следует использовать значение по умолчанию или CREATE USER
инструкцииCREATE LOGIN
. Расширение WITH OBJECT_ID
находится в общедоступной предварительной версии и является элементом устранения неполадок, реализованным для использования с неуникными субъектами-службами. Использование его с уникальным субъектом-службой не требуется. WITH OBJECT_ID
Использование расширения для субъекта-службы без добавления суффикса будет выполнено успешно, но не будет очевидно, какой субъект-служба создан для входа или пользователя. Рекомендуется создать псевдоним с помощью суффикса для уникальной идентификации субъекта-службы. Расширение WITH OBJECT_ID
не поддерживается для SQL Server.
PASSWORD = 'password'
Указывает пароль для создаваемого имени входа SQL. Выбирайте надежные пароли. Дополнительные сведения см. в статьях Надежные пароли и Политика паролей. Начиная с SQL Server 2012 (11.x), сохраненные сведения о пароле вычисляются с помощью SHA-512 "соленого" пароля.
В паролях учитывается регистр символов. Пароли всегда должны содержать не менее 10 символов и не могут превышать 128 символов. Пароли могут содержать символы a-z, A-Z, 0-9 и большинство небуквенно-цифровых символов. Пароли не могут содержать одинарные кавычки или login_name.
SID = sid
Используется для повторного создания имени входа. Применяется только для имен входа с проверкой подлинности SQL Server. Указывает идентификатор SID нового имени входа проверки подлинности SQL Server. Если этот параметр не используется, SQL Server автоматически назначает идентификатор безопасности. Структура идентификатора SID зависит от версии SQL Server. Для базы данных SQL это 32-байтовый (binary(32)) литерал, состоящий из 0x01060000000000640000000000000000
плюс 16 байт, представляющих GUID. Например, SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7
.
Замечания
Синтаксис
FROM EXTERNAL PROVIDER
создает субъекты уровня сервера, сопоставленные с учетными записями Microsoft EntraЕсли
FROM EXTERNAL PROVIDER
задано:Login_name должен представлять существующую учетную запись Microsoft Entra (пользователя, группу или приложение), доступную в идентификаторе Microsoft Entra с помощью текущего Управляемый экземпляр SQL Azure. Для субъектов Microsoft Entra требуется синтаксис CREATE LOGIN:
UserPrincipalName объекта Microsoft Entra для пользователей Microsoft Entra.
DisplayName объекта Microsoft Entra для групп и приложений Microsoft Entra.
Невозможно использовать параметр PASSWORD .
По умолчанию при
FROM EXTERNAL PROVIDER
опущении предложения создается регулярное имя входа SQL.Имена входа Microsoft Entra отображаются в
sys.server_principals
: значение столбца типа имеетE
значение иtype_desc
установлено значение EXTERNAL_LOGIN для имен входа, сопоставленных с пользователями Microsoft Entra, или значение столбцаX
type_desc
типа, заданное для EXTERNAL_GROUP для имен входа, сопоставленных с группами Microsoft Entra.Скрипт для передачи имен входа см. в разделе Способы передачи имен входа и паролей между экземплярами SQL Server 2005 и SQL Server 2008.
При создании имени входа оно автоматически включается, и ему предоставляется разрешение CONNECT SQL уровня сервера.
Внимание
Сведения о работе с именами входа и пользователями в базе данных SQL Azure см. в статье Управление именами входа в базе данных SQL Azure.
Имена входа и разрешения
Только имя входа на уровне сервера (созданное процессом подготовки) или члены securityadmin
sysadmin
роли базы данных в master
базе данных могут создавать новые имена входа. Дополнительные сведения см. в разделах Роли уровня сервера и ALTER SERVER ROLE.
По умолчанию стандартное разрешение, предоставленное только что созданному имени входа master
Microsoft Entra: CONNECT SQL и VIEW ANY DATABASE.
имена входа Управляемый экземпляр SQL
Требуется разрешение ALTER ANY LOGIN на сервере или членство в предопределенной роли сервера
securityadmin
илиsysadmin
. Только учетная запись Microsoft Entra с разрешением ALTER ANY LOGIN на сервере или членстве в одной из этих ролей может выполнить команду создания.Если имя входа является субъектом SQL, только имена входа, которые являются частью
sysadmin
роли, могут использовать команду create для создания имен входа для учетной записи Microsoft Entra.Должен быть членом того же клиента Microsoft Entra, что и Управляемый экземпляр SQL Azure.
После создания имени входа
Созданное имя входа может подключаться к управляемому экземпляру, но c разрешениями только для роли public. Попробуйте выполнить некоторые из приведенных ниже действий.
Сведения о создании пользователя из имени входа Microsoft Entra см. в статье CREATE USER.
Чтобы предоставить пользователю в базе данных разрешения, используйте
ALTER SERVER ROLE ... ADD MEMBER
инструкцию, чтобы добавить пользователя в одну из встроенных ролей базы данных или настраиваемую роль, или предоставить пользователю разрешения непосредственно с помощью инструкции GRANT . Дополнительные сведения см. в разделах Пользователи без прав администратора, Дополнительные административные роли на уровне сервера, ALTER SERVER ROLE и GRANT.Чтобы предоставить разрешения на уровне сервера, создайте пользователя базы данных в
master
базе данных и используйте инструкциюALTER SERVER ROLE ... ADD MEMBER
, чтобы добавить пользователя в одну из ролей административного сервера. Дополнительные сведения см. в разделах Роли уровня сервера, ALTER SERVER ROLE и Роли сервера.- Используйте следующую команду, чтобы добавить
sysadmin
роль в имя входа Microsoft Entra:ALTER SERVER ROLE sysadmin ADD MEMBER [MS_Entra_login]
- Используйте следующую команду, чтобы добавить
Воспользуйтесь инструкцией GRANT, чтобы предоставить разрешения уровня сервера новому имени входа или роли, содержащей это имя входа. Дополнительные сведения см. в статье GRANT.
Ограничения
Установка имени входа Microsoft Entra, сопоставленного с группой Microsoft Entra, так как владелец базы данных не поддерживается.
Олицетворение имен входа Microsoft Entra с помощью других субъектов Microsoft Entra поддерживается, например предложение EXECUTE AS .
Только субъекты-серверы (имена входа), которые являются частью
sysadmin
роли, могут выполнять следующие операции, предназначенные для субъектов Microsoft Entra:- EXECUTE AS USER;
- EXECUTE AS LOGIN.
Внешние (гостевые) пользователи, импортированные из другого каталога Microsoft Entra, не могут быть напрямую настроены как администратор Microsoft Entra для Управляемый экземпляр SQL с помощью портал Azure. Вместо этого присоедините внешнего пользователя к группе , назначаемой ролью, и настройте группу в качестве администратора экземпляра. Для настройки отдельных гостевых пользователей в качестве администратора экземпляра можно использовать PowerShell или Azure CLI.
Имена входа не реплика в дополнительный экземпляр в группе отработки отказа. Имена входа сохраняются в
master
базе данных, которая является системной базой данных, и, как это, не реплика. Чтобы решить эту проблему, необходимо создать имена входа с тем же идентификатором безопасности в дополнительном экземпляре.
-- Code to create login on the secondary instance
CREATE LOGIN foo WITH PASSWORD = '<enterStrongPasswordHere>', SID = <login_sid>;
Примеры
А. Создание имени входа с паролем
В следующем примере создается имя входа для конкретного пользователя и назначается пароль.
CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO
B. Создание имени входа из идентификатора безопасности
В следующем примере создается имя входа с проверкой подлинности SQL Server и определяется его SID.
CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';
SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO
Наш запрос возвращает идентификатор SID 0x241C11948AEEB749B0D22646DB1A19F2. Ваш запрос вернет другое значение. Следующие выражения удаляют имя входа, а затем повторно создают имя входа. Используйте SID из предыдущего запроса.
DROP LOGIN TestLogin;
GO
CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;
SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO
C. Создание имени входа для пользователя Microsoft Entra
В следующем примере создается имя входа для учетной записи joe@contoso.onmicrosoft.com Microsoft Entra, которая существует в клиенте с именем contoso.
CREATE LOGIN [joe@contoso.onmicrosoft.com] FROM EXTERNAL PROVIDER
GO
D. Создание имени входа для федеративной учетной записи Microsoft Entra
В следующем примере создается имя входа для федеративной учетной записи bob@contoso.com Microsoft Entra, которая существует в клиенте с именем contoso. Пользователь Боб также может быть гостем.
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
GO
Е. Создание имени входа для группы Microsoft Entra
В следующем примере создается имя входа для группы Microsoft Entra group mygroup , которая существует в клиенте contoso.
CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
GO
F. Создание имени входа для приложения Microsoft Entra
В следующем примере создается имя входа для приложения Microsoft Entra myapp , существующего в клиенте contoso.
CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER
G. Проверка новых имен входа
Чтобы проверить вновь добавленное имя входа, выполните следующую команду T-SQL:
SELECT *
FROM sys.server_principals;
GO
Связанный контент
* Azure Synapse
Analytics *
Azure Synapse Analytics
Синтаксис
-- Syntax for Azure Synapse Analytics
CREATE LOGIN login_name
{
FROM EXTERNAL PROVIDER
| WITH <option_list> [,..]
}
<option_list> ::=
PASSWORD = { 'password' }
[ , SID = sid ]
Аргументы
Примечание.
Субъекты сервера Microsoft Entra (имена входа) в настоящее время находятся в предварительной версии.
При использовании с предложением FROM EXTERNAL PROVIDER имя входа указывает субъект Microsoft Entra, который является пользователем, группой или приложением Microsoft Entra. В противном случае оно представляет созданное имя входа SQL.
Пользователи и субъекты-службы Майкрософт (приложения Microsoft Entra), которые являются членами более 2048 групп безопасности Microsoft Entra, не поддерживаются для входа в базу данных в База данных SQL, Управляемый экземпляр SQL или Azure Synapse.
FROM EXTERNAL PROVIDER
Указывает, что имя входа предназначено для проверки подлинности Microsoft Entra.
login_name
Указывает имя пользователя для создаваемого имени входа. SQL Analytics в Azure Synapse поддерживает имена входа только для SQL. Чтобы создать учетные записи для пользователей Microsoft Entra, используйте инструкцию CREATE USER .
PASSWORD ="пароль"
Указывает пароль для создаваемого имени входа SQL. Выбирайте надежные пароли. Дополнительные сведения см. в статьях Надежные пароли и Политика паролей. Начиная с SQL Server 2012 (11.x), сохраненные сведения о пароле вычисляются с помощью SHA-512 "соленого" пароля.
В паролях учитывается регистр символов. Пароли всегда должны содержать не менее восьми символов и не могут превышать 128 символов. Пароли могут содержать символы a-z, A-Z, 0-9 и большинство небуквенно-цифровых символов. Пароли не могут содержать одинарные кавычки или login_name.
SID = sid
Используется для повторного создания имени входа. Применяется только к именам входа проверки подлинности SQL Server, но не относится к именам входа проверки подлинности Windows. Указывает идентификатор SID нового имени входа проверки подлинности SQL Server. Если этот параметр не используется, SQL Server автоматически назначает идентификатор безопасности. Структура идентификатора SID зависит от версии SQL Server. Для SQL Analytics это 32-байтовый (binary(32)) литерал, состоящий из 0x01060000000000640000000000000000
плюс 16 байт, представляющих GUID. Например, SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7
.
Замечания
- В паролях учитывается регистр символов.
- Скрипт для передачи имен входа см. в разделе Способы передачи имен входа и паролей между экземплярами SQL Server 2005 и SQL Server 2008.
- При создании имени входа оно автоматически включается, и ему предоставляется разрешение CONNECT SQL уровня сервера.
- Для разрешения доступа режим проверки подлинности сервера должен соответствовать типу имени входа.
- Сведения о проектировании системы разрешений см. в статье Getting Started with Database Engine Permissions.
Имена входа
Инструкция CREATE LOGIN должна быть единственной инструкцией в пакете.
При подключении к Azure Synapse с помощью таких инструментов, как sqlcmd, необходимо добавить имя сервера SQL Analytics к имени входа в строке подключения в виде <login>@<server>. Например, если имя входа — login1
, а полное имя SQL Analytics — servername.database.windows.net
, то параметр username в строке подключения должен иметь вид login1@servername
. Так как общая длина параметра username составляет 128 символов, длина имени login_name ограничена до 127 символов минус длина имени сервера. В примере login_name
может иметь длину не более 117 символов, поскольку servername
имеет длину 10 символов.
Чтобы создать имя входа, необходимо подключиться к master
базе данных.
Правила SQL Server позволяют создать имя входа проверки подлинности SQL Server в формате <loginname>@<servername>. Если сервер Базы данных SQL — myazureserver, а имя входа — myemail@contoso.com, то необходимо указать имя входа в виде myemail@contoso.com@myazureserver.
Данные имени входа необходимы для проверки подлинности подключения, и правила брандмауэра на уровне сервера временно кэшируются в каждой базе данных. Этот кэш периодически обновляется. Чтобы принудительно обновить кэш проверки подлинности и убедиться в том, что база данных содержит последнюю версию таблицы имен входа, выполните инструкцию DBCC FLUSHAUTHCACHE.
Дополнительные сведения об именах входа служб см. в разделе Управление базами данных и именами входа.
Разрешения
Только имя входа на уровне сервера (созданное процессом подготовки) или члены loginmanager
роли базы данных в master
базе данных могут создавать новые имена входа. Дополнительные сведения см. в разделах Роли уровня сервера и ALTER SERVER ROLE.
После создания имени входа
Созданное имя входа может подключаться к Azure Synapse, но имеет разрешения только для роли public. Попробуйте выполнить некоторые из приведенных ниже действий.
Чтобы подключиться к базе данных, создайте пользователя базы данных для имени входа. Дополнительные сведения можно найти в статье CREATE USER (Transact-SQL).
Чтобы предоставить пользователю в базе данных разрешения, используйте
ALTER SERVER ROLE ... ADD MEMBER
инструкцию, чтобы добавить пользователя в одну из встроенных ролей базы данных или настраиваемую роль, или предоставить пользователю разрешения непосредственно с помощью инструкции GRANT . Дополнительные сведения см. в разделах Пользователи без прав администратора, Дополнительные административные роли на уровне сервера, ALTER SERVER ROLE и GRANT.Чтобы предоставить разрешения на уровне сервера, создайте пользователя базы данных в
master
базе данных и используйте инструкциюALTER SERVER ROLE ... ADD MEMBER
, чтобы добавить пользователя в одну из ролей административного сервера. Дополнительные сведения см. в разделах Роли уровня сервера, ALTER SERVER ROLE и Роли сервера.Воспользуйтесь инструкцией GRANT, чтобы предоставить разрешения уровня сервера новому имени входа или роли, содержащей это имя входа. Дополнительные сведения см. в статье GRANT.
Примеры
А. Создание имени входа с паролем
В следующем примере создается имя входа для конкретного пользователя и назначается пароль.
CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO
B. Создание имени входа из идентификатора безопасности
В следующем примере создается имя входа с проверкой подлинности SQL Server и определяется его SID.
CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';
SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO
Наш запрос возвращает идентификатор SID 0x241C11948AEEB749B0D22646DB1A19F2. Ваш запрос вернет другое значение. Следующие выражения удаляют имя входа, а затем повторно создают имя входа. Используйте SID из предыдущего запроса.
DROP LOGIN TestLogin;
GO
CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;
SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO
Связанный контент
* Analytics
Platform System (PDW) *
Система платформы аналитики
Синтаксис
-- 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}
Аргументы
login_name
Указывает имя пользователя для создаваемого имени входа. Существует четыре типа имен входа: имена входа SQL Server, имена входа Windows, имена входа, сопоставленные с помощью сертификата, а также имена входа, сопоставленные с помощью асимметричного ключа. При создании имен входа, сопоставленных с учетной записью домена Windows, необходимо использовать имя входа пользователя в windows 2000 в формате [<domainName>\<login_name>]. Имя участника-участника нельзя использовать в формате login_name@DomainName. См. приведенный ниже пример Г. Имена входа проверки подлинности — это имя sysname и должны соответствовать правилам идентификаторов и не могут содержать "\". Имена входа Windows могут содержать символы «\». Имена входа, основанные на пользователях Active Directory, могут иметь не более 21 символа в длину.
PASSWORD ='password'
Применяется только к именам входа SQL Server. Задает пароль для создаваемого имени входа. Выбирайте надежные пароли. Дополнительные сведения см. в статьях Надежные пароли и Политика паролей. Начиная с SQL Server 2012 (11.x), сохраненные сведения о пароле вычисляются с помощью SHA-512 "соленого" пароля.
В паролях учитывается регистр символов. Пароли всегда должны содержать не менее восьми символов и не могут превышать 128 символов. Пароли могут содержать символы a-z, A-Z, 0-9 и большинство небуквенно-цифровых символов. Пароли не могут содержать одинарные кавычки или login_name.
MUST_CHANGE
Применяется только к именам входа SQL Server. Если этот параметр задан, то при первом использовании нового имени входа SQL Server запрашивает новый пароль.
CHECK_EXPIRATION = { ON | OFF }
Применяется только к именам входа SQL Server. Указывает, должна ли политика истечения срока действия паролей принудительно применяться к этому имени входа. Значение по умолчанию — OFF.
CHECK_POLICY = { ON | OFF }
Применяется только к именам входа SQL Server. Указывает, что политики паролей Windows компьютера, на котором работает SQL Server, должны принудительно применяться к этому имени входа. Значение по умолчанию — ON.
Если политика Windows требует надежных паролей, то пароль должен обладать по крайней мере тремя из следующих четырех качеств:
- Наличие символов верхнего регистра (A-Z).
- Наличие строчных символов (a-z).
- Числа (0-9).
- Один из неэлементных символов, таких как пробел, _, @, @, ^, %, !, $, #или &.
ОКНА
Имя входа сопоставлено с именем входа Windows.
Замечания
- В паролях учитывается регистр символов.
- Если задан параметр MUST_CHANGE, то параметры CHECK_EXPIRATION и CHECK_POLICY должны иметь значение ON. В противном случае выполнение инструкции приведет к ошибке.
- Сочетание CHECK_POLICY = OFF и CHECK_EXPIRATION = ON не поддерживается.
- Если значение CHECK_POLICY равно OFF, то lockout_time сбрасывается и параметру CHECK_EXPIRATION также присваивается значение OFF.
Внимание
CHECK_EXPIRATION и CHECK_POLICY применяются только в Windows Server 2003 и более поздних версиях. Дополнительные сведения см. в разделе Политика паролей.
- Скрипт для передачи имен входа см. в разделе Способы передачи имен входа и паролей между экземплярами SQL Server 2005 и SQL Server 2008.
- При создании имени входа оно автоматически включается, и ему предоставляется разрешение CONNECT SQL уровня сервера.
- Сведения о проектировании системы разрешений см. в статье Getting Started with Database Engine Permissions.
Разрешения
Создавать имена входа могут только пользователи с разрешением ALTER ANY LOGIN на сервере или имеющие членство в предопределенной роли сервера securityadmin. Дополнительные сведения см. в разделах Роли уровня сервера и ALTER SERVER ROLE.
После создания имени входа
Созданное имя входа может подключаться к Azure Synapse Analytics, но имеет разрешения только для роли public. Попробуйте выполнить некоторые из приведенных ниже действий.
- Чтобы подключиться к базе данных, создайте пользователя базы данных для имени входа. Дополнительные сведения можно найти в статье CREATE USER (Transact-SQL).
- Создайте определяемую пользователем роль сервера с помощью CREATE SERVER ROLE. Используйте
ALTER SERVER ROLE ... ADD MEMBER
для добавления нового имени входа в определяемую пользователем роль сервера. Дополнительные сведения см. в статьях CREATE SERVER ROLE и ALTER SERVER ROLE. - Используйте
sp_addsrvrolemember
для добавления имени входа в фиксированную роль сервера. Дополнительные сведения см. в разделе Роли уровня сервера и sp_addsrvrolemember. - Воспользуйтесь инструкцией GRANT, чтобы предоставить разрешения уровня сервера новому имени входа или роли, содержащей это имя входа. Дополнительные сведения см. в статье GRANT.
Примеры
G. Создание имени входа для проверки подлинности SQL Server с помощью пароля
В следующем примере создается имя входа Mary7
с паролем A2c3456
.
CREATE LOGIN Mary7 WITH PASSWORD = 'A2c3456$#' ;
H. Использование параметров
В следующем примере создается имя входа Mary8
с паролем и дополнительными аргументами.
CREATE LOGIN Mary8 WITH PASSWORD = 'A2c3456$#' MUST_CHANGE,
CHECK_EXPIRATION = ON,
CHECK_POLICY = ON;
I. Создание имени входа из учетной записи домена Windows
В следующем примере имя входа создается на основе учетной записи домена Windows Mary
в домене Contoso
.
CREATE LOGIN [Contoso\Mary] FROM WINDOWS;
GO
Связанный контент
- Приступая к работе с разрешениями Database Engine
- Субъекты
- Политика паролей
- ALTER LOGIN
- DROP LOGIN
- EVENTDATA
- Создание имени входа