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


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, необходимо использовать в формате [<Домен>\<ИмяВхода>]. Нельзя использовать UPN в формате loginName@DomainName. См. пример Г далее в этом разделе.

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

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

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

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

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

  • 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.

Разрешения

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

Если используется параметр 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