CREATE LOGIN (Transact-SQL)
Создает новое имя входа SQL Server.
Синтаксис
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
См. также