sp_change_users_login (Transact-SQL)
Применимо к:SQL Server
Карты существующего пользователя базы данных в имя входа SQL Server.
Внимание
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте ALTER USER .
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ]
[ , [ @LoginName = ] 'login' ]
[ , [ @Password = ] 'password' ]
[;]
Аргументы
[ ] @Action= 'action'
Описывает действие, которое будет выполнено процедурой. действие — varchar (10). действие может иметь одно из следующих значений.
значение | Описание |
---|---|
Auto_Fix | Связывает запись пользователя в представлении системного каталога sys.database_principals в текущей базе данных с именем имени SQL Server. Если имени входа с таким же именем не существует, оно будет создано. Проверьте результат из инструкции Auto_Fix , чтобы убедиться, что правильная ссылка на самом деле сделана. Избегайте использования Auto_Fix в ситуациях, чувствительных к безопасности. При использовании Auto_Fix необходимо указать пользователя и пароль, если имя входа еще не существует, в противном случае необходимо указать пользователя, но пароль будет игнорироваться. имя входа должно иметь значение NULL. пользователь должен быть допустимым пользователем в текущей базе данных. Не может быть еще одного пользователя, сопоставленного с именем входа. |
Отчет | Перечисляет пользователей и соответствующие идентификаторы безопасности (SID) в текущей базе данных, которые не связаны ни с каким именем входа. пользователь, имя входа и пароль должны иметь значение NULL или не указано. Чтобы заменить параметр отчета запросом с помощью системных таблиц, сравните записи в sys.server_prinicpals с записями в sys.database_principals. |
Update_One | Связывает указанного пользователя в текущей базе данных с существующим именем входа SQL Server. необходимо указать пользователя и имя входа . пароль должен иметь значение NULL или не указан. |
[ ] @UserNamePattern= 'user'
Имя пользователя в текущей базе данных. пользователь имеет имя sysname с значением NULL по умолчанию.
[ ] @LoginName= "login"
Имя имени входа SQL Server. Аргумент login имеет тип sysname и значение по умолчанию NULL.
[ ] @Password= 'password'
Пароль, назначенный новому имени входа SQL Server, созданному путем указания Auto_Fix. Если соответствующее имя входа уже существует, пользователь и имя входа сопоставляются, а пароль игнорируется. Если соответствующее имя входа не существует, sp_change_users_login создает новое имя входа SQL Server и назначает пароль в качестве пароля для нового имени входа. пароль является sysname и не должен иметь значение NULL.
Внимание
Всегда используйте надежный пароль!
Значения кода возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Результирующие наборы
Имя столбца | Тип данных | Description |
---|---|---|
UserName | sysname | Имя пользователя базы данных. |
UserSID | varbinary(85) | Идентификатор защиты пользователя. |
Замечания
Используйте sp_change_users_login для связывания пользователя базы данных в текущей базе данных с именем входа SQL Server. Если имя входа для пользователя изменилось, используйте процедуру sp_change_users_login, чтобы связать пользователя с новым именем входа без потери пользовательских разрешений. Новое имя входа не может быть sa, и пользователь не может быть dbo, гостевым или INFORMATION_SCHEMA пользователем.
Процедура sp_change_users_login не может использоваться для сопоставления пользователей базы данных с участниками уровня Windows, сертификатами или асимметричными ключами.
sp_change_users_login нельзя использовать с именем входа SQL Server, созданным из субъекта Windows или пользователем, созданным с помощью CREATE USER БЕЗ ВХОДА.
Процедура sp_change_users_login не может выполняться в определяемой пользователем транзакции.
Разрешения
Требуется членство в предопределенной роли базы данных db_owner. Только члены предопределенных ролей сервера sysadmin могут указать параметр Auto_Fix .
Примеры
А. Отображение отчета по текущим сопоставлениям пользователей именам входа
Следующий пример производит отчет по пользователям в текущей базе данных и их идентификаторам защиты (SIDs).
EXEC sp_change_users_login 'Report';
B. Сопоставление пользователя базы данных новому имени входа 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 AdventureWorks2022;
GO
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO
C. Автоматическое сопоставление пользователя имени входа (создание при необходимости нового имени входа)
В следующем примере показано, как сопоставить Auto_Fix
существующего пользователя с именем входа или создать имя входа SQL Server с паролемB3r12-3x$098f6
, если имя входа Mary
Mary
не существует.
USE AdventureWorks2022;
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)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по