sp_addlogin (Transact-SQL)
Создает новое имя входа на SQL Server, позволяющее пользователю подключаться к экземпляру SQL Server с применением проверки подлинности SQL Server.
Важно! |
---|
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Используйте вместо нее инструкцию CREATE LOGIN. |
Примечание по безопасности |
---|
При возможности используйте проверку подлинности Windows. |
Синтаксис
sp_addlogin [ @loginame = ] 'login'
[ , [ @passwd = ] 'password' ]
[ , [ @defdb = ] 'database' ]
[ , [ @deflanguage = ] 'language' ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt= ] 'encryption_option' ]
Аргументы
[ @loginame = ] 'login'
Имя учетной записи. Аргумент login имеет тип sysname и не имеет значения по умолчанию.[ @passwd = ] 'password'
Пароль имени входа. Аргумент password имеет тип sysname и значение по умолчанию NULL.Примечание по безопасности Не используйте пустые пароли. Выбирайте надежные пароли.
[ @defdb = ] 'database'
База данных, используемая по умолчанию именем входа (первая база данных, к которой подключается пользователь с этим именем после входа в систему). Аргумент database имеет тип sysname и значение по умолчанию master.[ @deflanguage = ] 'language'
Язык по умолчанию имени входа. Аргумент language имеет тип sysname и значение по умолчанию NULL. Если аргумент language не указан, значением по умолчанию для аргумента language нового имени входа становится текущий язык по умолчанию, заданный на сервере.[ @sid = ] 'sid'
Идентификатор безопасности (SID). Аргумент sid имеет тип varbinary(16) и значение по умолчанию NULL. Если аргумент sid равен NULL, система сама формирует SID для нового имени входа. Несмотря на то, что этот аргумент имеет тип varbinary, значения, отличные от NULL, должны включать ровно 16 байт и не должны уже существовать. Аргумент sid полезен, например, при использовании имен входа SQL Server в сценариях или переносе их с одного сервера на другой, если нужно, чтобы они имели один и тот же SID на разных серверах.[ @encryptopt = ] 'encryption_option'
Этот аргумент определяет, передается ли пароль в виде открытого текста или в виде его хэша. Шифрование при этом не выполняется. Слово «шифрование» используется в этом контексте для обратной совместимости. Если в процедуру передан открытый пароль, он хэшируется. Хэш сохраняется. Аргумент encryption_option имеет тип varchar(20) и может принимать одно из следующих значений:Значение
Описание
NULL
Пароль передан как открытый текст. Это значение по умолчанию.
skip_encryption
Хэширование пароля уже выполнено. Компонент Database Engine должен сохранить его значение без повторного хэширования.
skip_encryption_old
Указанный пароль был хэширован более ранней версией SQL Server. Компонент Database Engine должен сохранить его значение без повторного хэширования. Этот вариант предоставлен только для выполнения обновлений.
Значения кодов возврата
0 (успешное завершение) или 1 (ошибка)
Замечания
Имена входа SQL Server могут содержать от 1 до 128 символов, включая буквы, символы и цифры. Имена входа не должны включать обратную косую черту (\), являться зарезервированными именами, такими как sa или public, не могут уже существовать, иметь значение NULL или быть пустой строкой ('').
Если предоставлено имя базы данных по умолчанию, к ней можно подключиться, не выполняя инструкцию USE. Однако использовать базу данных по умолчанию нельзя, пока ее владелец не предоставит доступ к ней (с помощью хранимой процедуры sp_adduser, sp_addrolemember) или sp_addrole.
Номер SID — это идентификатор GUID, однозначно определяющий имя входа на сервере.
Изменение языка по умолчанию на сервере не приводит к изменению языка по умолчанию существующих имен входа. Чтобы изменить язык по умолчанию на сервере, воспользуйтесь хранимой процедурой sp_configure.
Применение значения skip_encryption для подавления хэширования паролей полезно, если пароль уже был хэширован при добавлении имени входа в SQL Server. Если пароль был хэширован более ранней версией SQL Server, укажите значение skip_encryption_old.
Хранимая процедура sp_addlogin не может быть выполнена в пользовательской транзакции.
В следующей таблице указаны некоторые хранимые процедуры, используемые совместно с sp_addlogin.
Хранимая процедура |
Описание |
---|---|
Добавляет пользователя или группу Windows. |
|
Изменяет пароль пользователя. |
|
Изменяет назначенную пользователю базу данных по умолчанию. |
|
Изменяет назначенный пользователю язык по умолчанию. |
Разрешения
Требуется разрешение ALTER ANY LOGIN.
Примеры
А. Создание имени входа на SQL Server
В следующем примере создается имя входа на SQL Server для пользователя Victoria с паролем B1r12-36 без указания базы данных по умолчанию.
EXEC sp_addlogin 'Victoria', 'B1r12-36';
GO
Б. Создание имени входа на SQL Server с базой данных по умолчанию
В следующем примере создается имя входа на SQL Server для пользователя Albert с паролем B5432-3M6 и базой данных corporate по умолчанию.
EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate';
GO
В. Создание имени входа на SQL Server с другим языком по умолчанию
В следующем примере создается имя входа на SQL Server для пользователя TzTodorov с паролем 709hLKH7chjfwv, базой данных AdventureWorks и языком Bulgarian по умолчанию.
EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks', N'български'
Г. Создание имени входа на SQL Server с конкретным SID
В следующем примере создается имя входа на SQL Server для пользователя Michael с паролем B548bmM%f6, базой данных по умолчанию AdventureWorks, языком по умолчанию us_english и SID, равным 0x0123456789ABCDEF0123456789ABCDEF.
EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF