Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Сопоставляет существующего пользователя базы данных с именем входа SQL Server.
Внимание
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте ALTER USER .
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_change_users_login
[ @Action = ] 'Action'
[ , [ @UserNamePattern = ] N'UserNamePattern' ]
[ , [ @LoginName = ] N'LoginName' ]
[ , [ @Password = ] N'Password' ]
[ ; ]
Аргументы
[ @Action = ] 'Действие'
Описывает действие для выполнения хранимой процедуры. @Action — varchar(10), без значения по умолчанию и может иметь одно из следующих значений.
значение | Описание |
---|---|
Auto_Fix |
Связывает запись пользователя в представлении системного каталога в sys.database_principals текущей базе данных с именем sql Server. Если имя входа с тем же именем не существует, создается имя. Проверьте результат инструкции Auto_Fix , чтобы убедиться, что правильная ссылка на самом деле сделана. Избегайте использования Auto_Fix в ситуациях, чувствительных к безопасности.При использовании Auto_Fix необходимо указать @UserNamePattern и @Password, если имя входа еще не существует, в противном случае необходимо указать @UserNamePattern, но @Password игнорируется.
@LoginName должно бытьNULL .
@UserNamePattern должен быть допустимым пользователем в текущей базе данных. Имя входа не может сопоставить другого пользователя с ним. |
Report |
Выводит список пользователей и соответствующих идентификаторов безопасности (SID) в текущей базе данных, которые не связаны с каким-либо именем входа.
@UserNamePattern, @LoginName и @Password должны быть NULL указаны или не указаны.Чтобы заменить параметр отчета запросом с помощью системных таблиц, сравните записи, приведенные в sys.server_principals sys.database_principals записях. |
Update_One |
Связывает указанные @UserNamePattern в текущей базе данных с существующим @LoginName SQL Server.
необходимо указать @UserNamePattern и @LoginName.
@Password должен быть NULL указан или не указан. |
[ @UserNamePattern = ] N'UserNamePattern'
Имя пользователя в текущей базе данных.
@UserNamePattern имеет имя sysname с значением по умолчаниюNULL
.
[ @LoginName = ] N'LoginName'
Имя имени входа SQL Server.
@LoginName — sysname с значением по умолчаниюNULL
.
[ @Password = ] N'Пароль
Пароль, назначенный новому имени входа SQL Server, созданному путем Auto_Fix
указания.
@Password — sysname и не может бытьNULL
. Если соответствующее имя входа уже существует, пользователь и имя входа сопоставляются и @Password игнорируются. Если соответствующее имя входа не существует, sp_change_users_login
создает новое имя входа SQL Server и назначает @Password в качестве пароля для нового имени входа.
Внимание
Всегда используйте надежный пароль.
Значения кода возврата
0
(успешно) или 1
(сбой).
Результирующий набор
Имя столбца | Тип данных | Описание |
---|---|---|
UserName |
sysname | Имя пользователя базы данных. |
UserSID |
varbinary(85) | Идентификатор защиты пользователя. |
Замечания
Используется sp_change_users_login
для связывания пользователя базы данных в текущей базе данных с именем входа SQL Server. Если имя входа для пользователя изменяется, используйте sp_change_users_login
для связывания пользователя с новым именем входа без потери разрешений пользователя. Новый .
sp_change_users_login
Нельзя использовать для сопоставления пользователей базы данных с субъектами, сертификатами или асимметричными ключами windows.
sp_change_users_login
нельзя использовать с именем входа SQL Server, созданным из субъекта Windows или пользователем, созданным с помощью CREATE USER WITHOUT LOGIN
.
sp_change_users_login
невозможно выполнить в рамках определяемой пользователем транзакции.
Разрешения
Требуется членство в предопределенной роли базы данных db_owner. Параметр может указывать только члены Auto_Fix
.
Примеры
Примеры кода в этой статье используют базу данных образца AdventureWorks2022
или AdventureWorksDW2022
, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.
А. Отображение отчета текущего пользователя для сопоставления входа
Следующий пример производит отчет по пользователям в текущей базе данных и их идентификаторам защиты (SIDs).
EXECUTE sp_change_users_login 'Report';
В. Сопоставление пользователя базы данных с новым именем входа SQL Server
В следующем примере пользователь базы данных связан с новым именем входа SQL Server. Пользователь базы данных MB-Sales
, который сначала был сопоставлен с другим именем входа, будет повторно сопоставлен с именем входа MaryB
. Замените <password>
строгим паролем.
--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '<password>';
GO
--Map database user MB-Sales to login MaryB.
USE AdventureWorks2022;
GO
EXECUTE sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO
В. Автоматическое сопоставление пользователя с именем входа и создание нового имени входа при необходимости
В следующем примере показано, как сопоставить Auto_Fix
существующего пользователя с именем входа или создать имя входа SQL Server с паролем, если имя входа Mary
Mary
не существует. Замените <password>
строгим паролем.
USE AdventureWorks2022;
GO
EXECUTE sp_change_users_login 'Auto_Fix', 'Mary', NULL, '<password>';
GO