CREATE LOGIN (Transact-SQL)

Создает имя входа компонента Ядро СУБД для SQL Server, служб База данных SQL Windows Azure и SQL Server PDW.

ПримечаниеПримечание

Параметры CREATE LOGIN различаются для SQL Server, служб База данных SQL и SQL Server PDW.

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

Синтаксис

-- 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>[ ,... ] ]
    | CERTIFICATE certname
    | ASYMMETRIC KEY asym_key_name 

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

Синтаксис

-- Syntax for SQL Database
CREATE LOGIN login_name { WITH <option_list3> }

<option_list3> ::= 
    PASSWORD = { 'password' }

Синтаксис

-- Syntax for SQL Server PDW
CREATE LOGIN login_name { WITH <option_list4> }

< option_list4> ::= 
    PASSWORD = { 'password' } [ MUST_CHANGE ]
    [ , <option_list5> [ ,... ] ]

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

Аргументы

  • 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
    Применимо только к ключевому слову HASHED. Указывает хэшированное значение пароля для создаваемого имени входа.

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

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

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

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

  • DEFAULT_DATABASE **=**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
    Имя входа сопоставлено с именем входа Windows.

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

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

Замечания

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

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

Если задан параметр 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

В службах База данных 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 см. в разделе Управление базами данных и именами входа в базу данных SQL Windows Azure.

Разрешения

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

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

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

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

После создания имя входа подключается к компоненту Ядро СУБД, службам База данных SQL или устройству SQL Server PDW, но имеет разрешения только роли public. Попробуйте выполнить некоторые из приведенных ниже действий.

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

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

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

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

Примеры

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

Область применения: ко всем.

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

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

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

Применимо для SQL Server и Хранилище SQL Server PDW.

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

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

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

Применимо к SQL Server.

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

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

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

Применимо к SQL Server.

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

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

Применимо к SQL Server.

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

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

См. также

Справочник

ALTER LOGIN (Transact-SQL)

DROP LOGIN (Transact-SQL)

EVENTDATA (Transact-SQL)

Основные понятия

Участники (компонент Database Engine)

Политика паролей

Создание имени входа