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