sp_migrate_user_to_contained (Transact-SQL)
Область применения: SQL Server
Преобразует пользователя базы данных, сопоставленного с именем входа SQL Server, в пользователя автономной базы данных с паролем. В автономной базе данных используйте эту процедуру для удаления зависимостей от экземпляра SQL Server, на котором установлена база данных. sp_migrate_user_to_contained отделяет пользователя от исходного имени входа SQL Server, чтобы такие параметры, как пароль и язык по умолчанию, можно администрировать отдельно для автономной базы данных. sp_migrate_user_to_contained можно использовать перед перемещением автономной базы данных в другой экземпляр SQL Server ядро СУБД для устранения зависимостей от текущих имен входа экземпляра SQL Server.
Примечание.
Будьте осторожны при использовании sp_migrate_user_to_contained, так как вы не сможете отменить эффект. Эта процедура используется только в автономной базе данных. Дополнительные сведения см. в разделе Contained Databases.
Синтаксис
sp_migrate_user_to_contained [ @username = ] N'user' ,
[ @rename = ] { N'copy_login_name' | N'keep_name' } ,
[ @disablelogin = ] { N'disable_login' | N'do_not_disable_login' }
Аргументы
[@username = ] N'user'
Имя пользователя в текущей автономной базе данных, сопоставленной с именем входа, прошедшим проверку подлинности SQL Server. Значение — sysname с значением NULL по умолчанию.
[@rename = ] N'copy_login_name'N'keep_name | '
Если пользователь базы данных на основе имени входа имеет другое имя пользователя, отличное от имени входа, используйте keep_name для сохранения имени пользователя базы данных во время миграции. Используйте copy_login_name для создания нового пользователя автономной базы данных с именем входа вместо пользователя. Если пользователь базы данных, созданный на основе имени входа, имеет имя, совпадающее с именем входа, то в обоих вариантах будет создан пользователь автономной базы данных без изменения имени.
[@disablelogin = ] N'disable_login'N'do_not_disable_login | '
disable_login отключает имя входа в базе данных master. Чтобы подключиться при отключении входа, подключение должно указать имя автономной базы данных в качестве начального каталога в рамках строка подключения.
Значения кода возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Замечания
sp_migrate_user_to_contained создает пользователя автономной базы данных с паролем независимо от свойств или разрешений для входа. Например, процедура может завершиться успешно, если имя входа отключено или пользователь отказано в разрешении CONNECT для базы данных.
sp_migrate_user_to_contained имеет следующие ограничения.
Имя пользователя не должно уже существовать в базе данных.
Преобразование встроенных пользователей, таких как dbo и guest, невозможно.
Пользователь не может быть указан в предложении EXECUTE AS подписанной хранимой процедуры.
Пользователь не может владеть хранимой процедурой, которая включает предложение EXECUTE AS OWNER .
sp_migrate_user_to_contained нельзя использовать в системной базе данных.
Безопасность
При миграции пользователей не следует отключать или удалять все имена входа администратора из экземпляра SQL Server. Если все имена входа удалены, см. статью "Подключение к SQL Server при блокировке системных администраторов".
Если имя входа BUILDIN\Administrators присутствует, администраторы могут подключиться, запуская приложение с помощью параметра "Запуск от имени администратора".
Разрешения
Требуется разрешение CONTROL SERVER .
Примеры
А. Перенос одного пользователя
В следующем примере выполняется перенос имени входа Barry
SQL Server на пользователя автономной базы данных с паролем. Пример не изменяет имя пользователя и сохраняет имя входа в качестве включенного.
sp_migrate_user_to_contained
@username = N'Barry',
@rename = N'keep_name',
@disablelogin = N'do_not_disable_login' ;
B. Преобразование всех пользователей базы данных с именами входа в пользователей автономной базы данных без имен входа
В следующем примере все пользователи, основанные на имени входа SQL Server, переносятся на пользователей автономной базы данных с паролями. Этот пример исключает имена входа, которые не были включены. Этот пример должен выполняться в автономной базе данных.
DECLARE @username sysname ;
DECLARE user_cursor CURSOR
FOR
SELECT dp.name
FROM sys.database_principals AS dp
JOIN sys.server_principals AS sp
ON dp.sid = sp.sid
WHERE dp.authentication_type = 1 AND sp.is_disabled = 0;
OPEN user_cursor
FETCH NEXT FROM user_cursor INTO @username
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE sp_migrate_user_to_contained
@username = @username,
@rename = N'keep_name',
@disablelogin = N'disable_login';
FETCH NEXT FROM user_cursor INTO @username
END
CLOSE user_cursor ;
DEALLOCATE user_cursor ;
См. также
Переход на частично автономную базу данных
Автономные базы данных
Кері байланыс
https://aka.ms/ContentUserFeedback.
Жақында қолжетімді болады: 2024 жыл бойы біз GitHub Issues жүйесін мазмұнға арналған кері байланыс механизмі ретінде біртіндеп қолданыстан шығарамыз және оны жаңа кері байланыс жүйесімен ауыстырамыз. Қосымша ақпаратты мұнда қараңыз:Жіберу және пікірді көру