Поделиться через


CREATE LOGIN (Transact-SQL)

Создает новое имя входа SQL Server. 

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

Синтаксис

CREATE LOGIN loginName { 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

Аргументы

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

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

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

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

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

Разрешения

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

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

Примеры

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

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

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

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

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

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

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

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

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

Г. Создание имени входа на основе учетной записи домена Windows

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

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