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


sp_change_users_login (Transact-SQL)

Изменения: 12 декабря 2006 г.

Сопоставляет существующего пользователя базы данных с именем входа SQL Server.

ms174378.note(ru-ru,SQL.90).gifПримечание.
Процедура sp_change_users_login не может быть использована с именем входа SQL Server, созданным на основе участника Windows, или с пользователем, созданным с помощью команды CREATE USER WITHOUT LOGIN.

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

Синтаксис

sp_change_users_login [ @Action = ] 'action' 
    [ , [ @UserNamePattern = ] 'user' ] 
    [ , [ @LoginName = ] 'login' ] 
        [ , [ @Password = ] 'password' ]

Аргументы

  • [ @Action= ] 'action'
    Описывает действие, которое будет выполнено процедурой. Аргумент action имеет тип varchar(10). Аргумент action может иметь одно из следующих значений.

    Значение Описание

    Auto_Fix

    Связывает вход пользователя в системном каталоге sys.database_principals в текущей базе данных с тем же именем входа в SQL Server. Если имени входа с таким же именем не существует, оно будет создано. Исследуйте результат выполнения инструкции Auto_Fix, чтобы убедиться, что фактически сделана правильная связь. Избегайте использования Auto_Fix в чувствительных к опасности ситуациях.

    При использовании Auto_Fix необходимо указать аргументы user и password, если имени входа еще не существует; иначе необходимо указать аргумент user, но аргумент password не будет учитываться. Аргумент login должен иметь значение NULL. Аргумент user должен быть допустимым пользователем в текущей базе данных. Не может быть еще одного пользователя, сопоставленного имени входа.

    Отчет

    Перечисляет пользователей и соответствующие идентификаторы защиты (SID) в текущей базе данных, которые не связаны ни с каким именем входа. Аргументы user, login и password должны иметь значение NULL или не должны быть указаны.

    Update_One

    Связывает указанный аргумент user в текущей базе данных с существующим аргументом SQL Server login. Аргументы user и login должны быть указаны. Аргумент password должен иметь значение NULL или не должен быть указан.

  • [ @UserNamePattern= ] 'user'
    Имя пользователя в текущей базе данных. Аргумент user имеет тип sysname и значение по умолчанию NULL.
  • [ @LoginName= ] 'login'
    Имя входа в SQL Server. Аргумент login имеет тип sysname и значение по умолчанию NULL.
  • [ @Password= ] 'password'
    Пароль, назначенный для нового имени входа SQL Server, которое создано путем указания значения Auto_Fix. Если совпадающее имя входа уже существует, пользователь и имя входа будут сопоставлены, а аргумент password пропущен. Если совпадающего имени входа не существует, процедура sp_change_users_login создаст новое имя входа SQL Server и назначит password как пароль для нового имени входа. Аргумент password имеет тип sysname и не должен иметь значение NULL.

    ms174378.security(ru-ru,SQL.90).gifПримечание безопасности.
    Всегда выбирайте надежный пароль. Дополнительные сведения см. в разделе Надежные пароли.

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

0 (успешное завершение) или 1 (неуспешное завершение)

Результирующие наборы

Имя столбца Тип данных Описание

UserName

sysname

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

UserSID

varbinary(85)

Идентификатор защиты пользователя.

Замечания

ms174378.note(ru-ru,SQL.90).gifПримечание.
Процедура sp_change_users_login не может использоваться для сопоставления пользователей базы данных участникам уровня Windows, сертификатам или асимметричным ключам.

Используйте процедуру sp_change_users_login, чтобы связать пользователя базы данных в текущей базе данных с именем входа SQL Server. Если имя входа для пользователя изменилось, используйте процедуру sp_change_users_login, чтобы связать пользователя с новым именем входа без потери пользовательских разрешений. Новое значение login не может быть sa, а user не может быть dbo, guest или пользователем INFORMATION_SCHEMA.

Процедура sp_change_users_login не может быть выполнена в пользовательской транзакции.

Разрешения

Необходимо членство в фиксированной роли базы данных db_owner. Только элементы фиксированной серверной роли sysadmin могут указать параметр Auto_Fix.

Примеры

А. Отображение отчета по текущим сопоставлениям пользователей именам входа

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

EXEC sp_change_users_login 'Report';

Б. Сопоставление пользователя базы данных новому имени входа SQL Server

В следующем примере пользователь базы данных будет связан с новым именем входа SQL Server. Пользователь базы данных MB-Sales, который сначала был сопоставлен с другим именем входа, будет повторно сопоставлен с именем входа MaryB.

--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';
GO
--Map database user MB-Sales to login MaryB.
USE AdventureWorks;
GO
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO

В. Автоматическое сопоставление пользователя имени входа (создание при необходимости нового имени входа)

Следующий пример показывает, как использовать Auto_Fix, чтобы сопоставить существующего пользователя к имени входа с таким же именем или создать имя входа SQL Server Mary, которое имеет пароль B3r12-3x$098f6, если имени входа Mary не существует.

USE AdventureWorks;
GO
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';
GO

См. также

Справочник

Хранимые процедуры безопасности (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_adduser (Transact-SQL)
sp_helplogins (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
sys.database_principals (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Измененное содержимое
  • Добавлено пояснение к примечанию об использовании процедуры sp_change_users_login.