sp_migrate_user_to_contained (Transact-SQL)sp_migrate_user_to_contained (Transact-SQL)

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

Преобразует пользователя базы данных, сопоставленного с именем входа SQL ServerSQL Server, в пользователя автономной базы данных с паролем.Converts a database user that is mapped to a SQL ServerSQL Server login, to a contained database user with password. В автономной базе данных эта процедура позволяет удалить зависимости от экземпляра SQL ServerSQL Server, на котором установлена база данных.In a contained database, use this procedure to remove dependencies on the instance of SQL ServerSQL Server where the database is installed. sp_migrate_user_to_contained отделяет пользователя от исходного SQL ServerSQL Server имени входа, поэтому для автономной базы данных можно отдельно администрировать такие параметры, как пароль и язык по умолчанию.sp_migrate_user_to_contained separates the user from the original SQL ServerSQL Server login, so that settings such as password and default language can be administered separately for the contained database. sp_migrate_user_to_contained можно использовать перед перемещением автономной базы данных в другой экземпляр, Компонент SQL Server Database EngineSQL Server Database Engine чтобы исключить зависимости от текущих SQL ServerSQL Server имен входа.sp_migrate_user_to_contained can be used before moving the contained database to a different instance of the Компонент SQL Server Database EngineSQL Server Database Engine to eliminate dependencies on the current SQL ServerSQL Server instance logins.

Примечание

Будьте внимательны при использовании sp_migrate_user_to_contained, так как вы не сможете отменить этот результат.Be careful when using sp_migrate_user_to_contained, as you will not be able to reverse the effect. Эта процедура используется только в автономной базе данных.This procedure is only used in a contained database. Дополнительные сведения см. в разделе Contained Databases.For more information, see Contained Databases.

СинтаксисSyntax

  
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' }   

АргументыArguments

[** @username =** ] N 'пользователь'[@username = ] N'user'
Имя пользователя в текущей автономной базе данных, сопоставленное с именем входа SQL ServerSQL Server, прошедшим проверку подлинности.Name of a user in the current contained database that is mapped to a SQL ServerSQL Server authenticated login. Аргумент имеет тип sysnameи значение по умолчанию null.The value is sysname, with a default of NULL.

[** @rename =** ] N 'copy_login_name' | N "keep_name"[@rename = ] N'copy_login_name' | N'keep_name'
Если пользователь базы данных, основанный на имени входа, имеет имя, отличное от имени входа, используйте keep_name , чтобы во время миграции имя пользователя базы данных сохранялось.When a database user based on a login has a different user name than the login name, use keep_name to retain the database user name during the migration. Используйте copy_login_name , чтобы создать нового пользователя автономной базы данных с именем входа, а не пользователя.Use copy_login_name to create the new contained database user with the name of the login, instead of the user. Если пользователь базы данных, созданный на основе имени входа, имеет имя, совпадающее с именем входа, то в обоих вариантах будет создан пользователь автономной базы данных без изменения имени.When a database user based on a login has the same user name as the login name, both options create the contained database user without changing the name.

[** @disablelogin =** ] N 'disable_login' | N "do_not_disable_login"[@disablelogin = ] N'disable_login' | N'do_not_disable_login'
disable_login отключает имя входа в базе данных master.disable_login disables the login in the master database. Чтобы подключиться, если имя входа отключено, соединение должно предоставить имя автономной базы данных в качестве первоначального каталога в строке подключения.To connect when the login is disabled, the connection must provide the contained database name as the initial catalog as part of the connection string.

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

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

ПримечанияRemarks

sp_migrate_user_to_contained создает пользователя автономной базы данных с паролем независимо от свойств или разрешений имени входа.sp_migrate_user_to_contained creates the contained database user with password, regardless of the properties or permissions of the login. Например, процедура может быть выполнена, если имя входа отключено или если пользователю отказано в доступе к базе данных.For example, the procedure can succeed if the login is disabled or if the user is denied the CONNECT permission to the database.

sp_migrate_user_to_contained имеет следующие ограничения.sp_migrate_user_to_contained has the following restrictions.

  • Имя пользователя не должно уже существовать в базе данных.The user name cannot already exist in the database.

  • Преобразование встроенных пользователей, таких как dbo и guest, невозможно.Built-in users, for example dbo and guest, cannot be converted.

  • Пользователь не может быть указан в предложении EXECUTE AS подписанной хранимой процедуры.The user cannot be specified in the EXECUTE AS clause of a signed stored procedure.

  • Пользователь не может владеть хранимой процедурой, включающей предложение EXECUTE AS OWNER .The user cannot own a stored procedure that includes the EXECUTE AS OWNER clause.

  • sp_migrate_user_to_contained нельзя использовать в системной базе данных.sp_migrate_user_to_contained cannot be used in a system database.

БезопасностьSecurity

При миграции пользователей следите за тем, чтобы не отключить и не удалить все имена входа администраторов экземпляра SQL ServerSQL Server.When migrating users, be careful not to disable or delete all the administrator logins from the instance of SQL ServerSQL Server. Если все имена для входа удалены, см. раздел Подключение к SQL Server при блокировке системных администраторов.If all logins are deleted, see Connect to SQL Server When System Administrators Are Locked Out.

Если указано имя входа Builtin \ администраторы, то администратор может подключиться, запустив приложение с помощью команды Запуск от имени администратора .If the BUILTIN\Administrators login is present, administrators can connect by starting their application using the Run as Administrator option.

РазрешенияPermissions

Требуется разрешение CONTROL SERVER .Requires the CONTROL SERVER permission.

ПримерыExamples

A.A. Перенос одного пользователяMigrating a single user

В следующем примере производится миграция имени входа SQL ServerSQL ServerBarry в пользователя автономной базы данных с паролем.The following example migrates a SQL ServerSQL Server login named Barry, to a contained database user with password. В этом примере имя пользователя не изменяется, а для имени входа используется значение включено.The example does not change the user name, and retains the login as enabled.

sp_migrate_user_to_contained   
@username = N'Barry',  
@rename = N'keep_name',  
@disablelogin = N'do_not_disable_login' ;  
  

Б.B. Преобразование всех пользователей базы данных с именами входа в пользователей автономной базы данных без имен входаMigrating all database users with logins to contained database users without logins

В следующем примере выполняется миграция всех пользователей, основанных на имени входа SQL ServerSQL Server , в пользователей автономной базы данных с паролями.The following example migrates all users that are based on SQL ServerSQL Server logins to contained database users with passwords. Этот пример исключает имена входа, которые не были включены.The example excludes logins that are not enabled. Этот пример должен выполняться в автономной базе данных.The example must be executed in the contained database.

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 ;  

См. также:See Also

Migrate to a Partially Contained Database Migrate to a Partially Contained Database
Автономные базы данныхContained Databases