CREATE LOGIN (Transact-SQL)

 

Создает имя входа компонента Компонент Database Engine для SQL Server и База данных SQL Azure.

Область применения: SQL Server (с SQL Server 2008 до текущей версии), База данных SQL Azure.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

-- SQL Server Syntax
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>[ ,... ] ]
    | CERTIFICATE certname
    | ASYMMETRIC KEY asym_key_name<windows_options> ::=      
    DEFAULT_DATABASE =database
    | DEFAULT_LANGUAGE =language

-- Syntax for Windows Azure SQL Database

CREATE LOGIN login_name
 { WITH <option_list3> }

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

Аргументы

  • login_name
    Указывает имя пользователя для создаваемого имени входа.Существует четыре типа имен входа: имена входа SQL Server, имена входа Windows, имена входа, сопоставленные с помощью сертификата, а также имена входа, сопоставленные с помощью асимметричного ключа.При создании имен входа, сопоставленных с учетной записью домена Windows, необходимо использовать имя входа версии, более ранней, чем Windows 2000, с форматом [<domainName>\<login_name>].Нельзя использовать UPN в формате login_name@DomainName.См. приведенный ниже пример Г.Имена входа проверки подлинности SQL Server имеют тип sysname, они должны соответствовать правилам для идентификаторов и не могут содержать символ «**\».Имена входа Windows могут содержать символы «\**».

  • PASSWORD ='password'
    Применяется только к именам входа SQL Server.Задает пароль для создаваемого имени входа.Следует использовать надежные пароли.Дополнительные сведения см. в разделах Надежные пароли и Политика паролей.

    В паролях учитывается регистр символов.Пароли всегда должны содержать не менее 8 символов и не могут содержать более 128 символов.Пароли могут содержать символы a-z, A-Z, 0-9 и большинство неалфавитных символов.Пароли не могут содержать одиночные кавычки или login_name.

  • PASSWORD **=**hashed_password

    Область применения: с SQL Server 2008 до SQL Server 2014.

    Применимо только к ключевому слову HASHED.Указывает хэшированное значение пароля для создаваемого имени входа.

  • HASHED

    Область применения: с SQL Server 2008 до SQL Server 2014.

    Применяется только к именам входа SQL Server.Указывает, что пароль, введенный после аргумента PASSWORD, уже хэширован. Если этот параметр не выбран, то строка, введенная в качестве пароля, хэшируется перед сохранением в базе данных.Данный параметр может быть применен только для миграции баз данных с одного сервера на другой.Не используйте параметр HASHED для создания новых имен входа.Параметр HASHED нельзя использовать с хэшами, созданными SQL Server 7 или более ранних версий.

  • MUST_CHANGE

    Область применения: с SQL Server 2008 до SQL Server 2014.

    Применяется только к именам входа SQL Server.Если этот параметр задан, то при первом использовании нового имени входа SQL Server запрашивается новый пароль.

  • CREDENTIAL **=**credential_name

    Область применения: с SQL Server 2008 до SQL Server 2014.

    Имя учетных данных для сопоставления с новым именем входа SQL Server.Учетные данные уже должны существовать на сервере. В настоящее время этот параметр только связывает учетные данные с именем входа.Учетные данные не могут быть сопоставлены с именем входа sa.

  • SID = sid
    Используется для повторного создания имени входа.Применяется только к именам входа проверки подлинности SQL Server, но не относится к именам входа проверки подлинности Windows.Указывает идентификатор SID нового имени входа проверки подлинности SQL Server.Если этот параметр не используется, SQL Server назначает идентификатор SID автоматически.Структура идентификатора безопасности зависит от версии SQL Server.

    • SID имени входа SQL Server: 16-байтовое (binary(16)) литеральное значение, основанное на GUID.Например, SID = 0x14585E90117152449347750164BA00A7.

    • SID имени входа База данных SQL: структура SID, допустимая для База данных SQL Azure.Как правило, это 32-байтовый (binary(32)) литерал, состоящий из 0x01060000000000640000000000000000 плюс 16 байт, представляющих GUID.Например, SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.

  • DEFAULT_DATABASE **=**database

    Область применения: с SQL Server 2008 до SQL Server 2014.

    База данных по умолчанию, связываемая с именем входа.Если этот параметр не задан, то базой данных по умолчанию становится master.

  • DEFAULT_LANGUAGE **=**language

    Область применения: с SQL Server 2008 до SQL Server 2014.

    Язык по умолчанию, назначаемый имени входа.Если этот параметр не задан, то в качестве языка по умолчанию выбирается текущий язык по умолчанию для сервера.При смене языка по умолчанию для сервера язык по умолчанию имени входа не меняется.

  • CHECK_EXPIRATION = { ON | OFF }

    Область применения: с SQL Server 2008 до SQL Server 2014.

    Применяется только к именам входа SQL Server.Указывает, должна ли политика истечения срока действия паролей принудительно применяться к этому имени входа.Значение по умолчанию — OFF.

  • CHECK_POLICY = { ON | OFF }

    Область применения: с SQL Server 2008 до SQL Server 2014.

    Применяется только к именам входа SQL Server.Указывает, что политики паролей Windows компьютера, на котором работает SQL Server, должны принудительно применяться к этому имени входа.Значение по умолчанию — ON.

    Если политика Windows требует надежных паролей, то пароль должен обладать по крайней мере тремя из следующих четырех качеств:

    • Наличие символов верхнего регистра (A-Z).

    • Наличие строчных символов (a-z).

    • Числа (0-9).

    • Один из неалфавитных символов, например пробел, _, @, *, ^, %! #, $ или &.

  • WINDOWS

    Область применения: с SQL Server 2008 до SQL Server 2014.

    Имя входа сопоставлено с именем входа Windows.

  • CERTIFICATE certname

    Область применения: с SQL Server 2008 до SQL Server 2014.

    Имя сертификата, связываемого с данным именем входа.Этот сертификат должен уже существовать в базе данных master.

  • ASYMMETRIC KEY asym_key_name

    Область применения: с SQL Server 2008 до SQL Server 2014.

    Имя асимметричного ключа, связываемого с данным именем входа.Этот ключ должен уже существовать в базе данных master.

Заметки

В паролях учитывается регистр символов.

Предварительное хэширование паролей поддерживается только при создании имен входа SQL Server.

Если указаны аргументы HASHED и CHECK_POLICY = ON, то сложность пароля не будет проверяться до его следующего изменения.

Если задан параметр 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.Имя входа можно создать на основе сертификата или асимметричного ключа только в том случае, если сертификат или асимметричный ключ уже существует в базе данных master.

Скрипт для передачи имен входа см. в разделе Способы передачи имен входа и паролей между экземплярами SQL Server 2005 и SQL Server 2008.

При создании имени входа оно автоматически включается, и ему предоставляется разрешение CONNECT SQL уровня сервера.

Имена входа базы данных SQL Windows Azure

В службах База данных SQL инструкция CREATE LOGIN должна быть единственной инструкцией в пакете.

В службах База данных SQL для создания имени входа необходимо подключение к базе данных master.

Правила SQL Server позволяют создать имя входа для проверки подлинности SQL Server в формате <имя_входа>@<имя_сервера>.Если сервер База данных SQL — myazureserver, а имя входа — myemail@live.com, то можно указать имя входа в виде myemail@live.com@myazureserver.Применяйте этот метод, только если планируется использовать эти учетные данные для подключения к одному серверу.Некоторые старые версии клиентских библиотек SQL требуют использовать формат <имя_входа>@<имя_сервера> при подключении к базе данных Azure SQL.

Дополнительные сведения об именах входа служб База данных SQL см. в разделе Управление базами данных и именами входа в базу данных SQL Windows Azure.

Разрешения

В SQL Server требуется разрешение ALTER ANY LOGIN на сервер или членство в предопределенной роли сервера securityadmin.

В службах База данных SQL создавать новые имена входа могут только имя входа участника уровня сервера (созданного процессом провизионирования) или члены роли loginmanager базы данных в базе данных master.

Если используется параметр CREDENTIAL, также необходимо разрешение ALTER ANY CREDENTIAL на сервере.

Следующие шаги

После создания имя входа подключается к компоненту Компонент Database Engine или База данных SQL, но имеет разрешения только роли public.Попробуйте выполнить некоторые из приведенных ниже действий.

  • Чтобы подключиться к базе данных, создайте пользователя базы данных для имени входа.Дополнительные сведения см. в разделе CREATE USER (Transact-SQL).

  • Создайте определяемую пользователем роль сервера с помощью инструкции CREATE SERVER ROLE (Transact-SQL).Воспользуйтесь инструкциями ALTER SERVER ROLEADD MEMBER для добавления нового имени входа к определяемой пользователем роли сервера.Дополнительные сведения см. в разделах CREATE SERVER ROLE (Transact-SQL) и ALTER SERVER ROLE (Transact-SQL).

  • Воспользуйтесь процедурой sp_addsrvrolemember для добавления имени входа к предопределенной роли сервера.Дополнительные сведения см. в разделах Роли уровня сервера и sp_addsrvrolemember (Transact-SQL).

  • Воспользуйтесь инструкцией GRANT, чтобы предоставить разрешения уровня сервера новому имени входа или роли, содержащей это имя входа.Дополнительные сведения см. в разделе Инструкция GRANT (Transact-SQL).

Примеры

A.Создание имени входа с паролем

В следующем примере создается имя входа для конкретного пользователя и назначается пароль.

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

Б.Создание имени входа с паролем

В следующем примере создается имя входа для конкретного пользователя и назначается пароль.Параметр MUST_CHANGE требует, чтобы пользователь изменил этот пароль при первом подключении к серверу.

Область применения: с SQL Server 2008 до SQL Server 2014.

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

В.Создание имени входа, сопоставленного с учетными данными

В следующем примере создается имя входа для конкретного пользователя с использованием идентификатора пользователя.Это имя входа сопоставляется с учетными данными.

Область применения: с SQL Server 2008 до SQL Server 2014.

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

Г.Создание имени входа на основе сертификата

В следующем примере создается имя входа для конкретного пользователя на основе сертификата в базе данных master.

Применимо к: от SQL Server 2008 до SQL Server 2014.

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 до SQL Server 2014.

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

Е.Создание имени входа на основе SID

Следующий пример создает имя входа с проверкой подлинности SQL Server и определяет его SID.

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

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

Наш запрос возвращает 0x241C11948AEEB749B0D22646DB1A19F2 в качестве SID.Ваш запрос вернет другое значение.Следующие выражения удаляют имя входа, а затем повторно создают имя входа.Используйте SID из предыдущего запроса.

DROP LOGIN TestLogin;
GO

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

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

См. также

Участники (компонент Database Engine)
Политика паролей
ALTER LOGIN (Transact-SQL)
DROP LOGIN (Transact-SQL)
EVENTDATA (Transact-SQL)
Создание имени входа