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


sp_addlogin (Transact-SQL)

Создает новое имя входа на SQL Server, позволяющее пользователю подключаться к экземпляру SQL Server с применением проверки подлинности SQL Server.

Важное примечаниеВажно!

В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Используйте вместо нее инструкцию CREATE LOGIN.

Примечание по безопасностиПримечание по безопасности

По возможности используйте проверку подлинности Windows.

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

Синтаксис

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.

Хранимая процедура

Описание

sp_grantlogin

Добавляет пользователя или группу Windows.

sp_password

Изменяет пароль пользователя.

sp_defaultdb

Изменяет назначенную пользователю базу данных по умолчанию.

sp_defaultlanguage

Изменяет назначенный пользователю язык по умолчанию.

Разрешения

Требуется разрешение 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, базой данных AdventureWorks2008R2 и языком Bulgarian по умолчанию.

EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks2008R2', N'български'

Г. Создание имени входа на SQL Server с конкретным SID

В следующем примере создается имя входа на SQL Server для пользователя Michael с паролем B548bmM%f6, базой данных по умолчанию AdventureWorks2008R2, языком по умолчанию us_english и SID, равным 0x0123456789ABCDEF0123456789ABCDEF.

EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks2008R2', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF