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


sp_addlogin (Transact-SQL)

Область применения: SQL Server

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

Внимание

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

Внимание

По возможности используйте аутентификацию Windows.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_addlogin
    [ @loginame = ] N'loginame'
    [ , [ @passwd = ] N'passwd' ]
    [ , [ @defdb = ] N'defdb' ]
    [ , [ @deflanguage = ] N'deflanguage' ]
    [ , [ @sid = ] sid ]
    [ , [ @encryptopt = ] 'encryptopt' ]
[ ; ]

Аргументы

[ @loginame = ] N'loginame'

Имя имени входа. @loginame — sysname без значения по умолчанию.

[ @passwd = ] N'passwd'

Пароль имени входа. @passwd — sysname с значением по умолчаниюNULL.

Внимание

Не используйте пустые пароли. Выбирайте надежные пароли.

[ @defdb = ] N'defdb'

База данных по умолчанию для входа (база данных, к которой имя входа сначала подключено после входа). @defdb — sysname с значением по умолчаниюmaster.

[ @deflanguage = ] N'deflanguage'

Язык входа по умолчанию. @deflanguage имеет имя sysname с значением по умолчаниюNULL. Если @deflanguage не задано, @deflanguage нового имени входа по умолчанию устанавливается на текущий язык по умолчанию сервера.

[ @sid = ] sid

Идентификационный номер безопасности (SID). @sid — varbinary(16), с значением по умолчаниюNULL. Если @sid , NULLсистема создает идентификатор безопасности для нового имени входа. Несмотря на использование типа данных varbinary , значения, отличные NULL от 16 байт в длину, и не могут существовать. Указание @sid полезно, например, при выполнении сценариев или перемещении имен входа SQL Server с одного сервера на другой, а имена входа должны иметь одинаковый идентификатор безопасности на разных серверах.

[ @encryptopt = ] "encryptopt"

Этот аргумент определяет, передается ли пароль в виде открытого текста или в виде его хэша. Шифрование не выполняется. Слово «шифрование» используется в этом контексте для обратной совместимости. Если пароль с четким текстом передается, он хэшируется. Хэш сохраняется. @encryptopt — varchar(20) и может быть одним из следующих значений.

значение Описание
NULL (по умолчанию) Пароль передан как открытый текст.
skip_encryption Хэширование пароля уже выполнено. Ядро СУБД должен хранить значение без повторного кэширования.
skip_encryption_old Предоставленный пароль был хэширован более ранней версией SQL Server. Ядро СУБД должен хранить значение без повторного кэширования. Этот вариант предоставлен только для выполнения обновлений.

Значения кода возврата

0 (успешно) или 1 (сбой).

Замечания

Имена входа SQL Server могут содержать от 1 до 128 символов, включая буквы, символы и цифры. Имена входа не могут содержать обратную косую черту (\); это зарезервированное имя входа, например sa или public, или уже существует; или NULL пустая строка.

Если указано имя базы данных по умолчанию, можно подключиться к указанной базе данных без выполнения инструкции USE . Однако вы не можете использовать базу данных по умолчанию, пока не будет предоставлен доступ к этой базе данных владельцем базы данных (с помощью sp_adduser, sp_addrolemember) или sp_addrole.

Номер безопасности — это идентификатор GUID, который однозначно идентифицирует имя входа на сервере.

Изменение языка по умолчанию сервера не изменяет язык по умолчанию существующих имен входа. Чтобы изменить язык по умолчанию сервера, используйте sp_configure.

Использование skip_encryption для подавления хэширования паролей полезно, если пароль уже хэширован при добавлении имени входа в SQL Server. Если пароль был хэширован более ранней версией SQL Server, используйте skip_encryption_old.

sp_addlogin невозможно выполнить в рамках определяемой пользователем транзакции.

В следующей таблице показаны несколько хранимых процедур, с которыми используются sp_addlogin.

Хранимая процедура Description
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

B. Создание имени входа SQL Server с базой данных по умолчанию

В следующем примере создается имя входа SQL Server для пользователя Albertс паролем B5432-3M6 и базой данных corporateпо умолчанию.

EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate';
GO

C. Создание имени входа SQL Server с другим языком по умолчанию

В следующем примере создается имя входа SQL Server для пользователя TzTodorovс паролем 709hLKH7chjfwv, базой данных AdventureWorks2022по умолчанию и языком Bulgarianпо умолчанию.

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

D. Создание имени входа SQL Server с определенным идентификатором безопасности

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

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