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