sp_migrate_user_to_contained (Transact-SQL)

S’applique à :SQL Server

Convertit un utilisateur de base de données mappé à une connexion SQL Server en un utilisateur de base de données autonome avec mot de passe. Dans une base de données autonome, utilisez cette procédure pour supprimer les dépendances sur l’instance de SQL Server où la base de données est installée. sp_migrate_user_to_contained sépare l’utilisateur de la connexion SQL Server d’origine afin que les paramètres tels que le mot de passe et la langue par défaut puissent être administrés séparément pour la base de données autonome. sp_migrate_user_to_contained pouvez être utilisé avant de déplacer la base de données autonome vers une autre instance de SQL Server Moteur de base de données pour éliminer les dépendances des connexions d’instance SQL Server actuelles.

Remarque

Soyez prudent lorsque vous utilisez sp_migrate_user_to_contained, car vous ne pourrez pas inverser l’effet. Cette procédure est utilisée uniquement dans une base de données autonome. Pour plus d’informations, consultez Bases de données autonomes.

Syntaxe

  
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’user'
Nom d’un utilisateur dans la base de données autonome actuelle mappée à une connexion authentifiée SQL Server. La valeur est sysname, avec une valeur par défaut null.

[@rename = ] N’copy_login_name’N’keep_name | '
Lorsqu’un utilisateur de base de données basé sur une connexion a un nom d’utilisateur différent du nom de connexion, utilisez keep_name pour conserver le nom d’utilisateur de la base de données pendant la migration. Utilisez copy_login_name pour créer l’utilisateur de base de données autonome avec le nom de la connexion, au lieu de l’utilisateur. Lorsqu'un utilisateur de la base de données basé sur un compte de connexion a le même nom d'utilisateur que le nom de connexion, les deux options créent l'utilisateur de base de données autonome sans modifier le nom.

[@disablelogin = ] N’disable_login’N’do_not_disable_login | '
disable_login désactive la connexion dans la base de données master. Pour vous connecter lorsque la connexion est désactivée, la connexion doit fournir le nom de la base de données autonome comme catalogue initial dans le cadre de la chaîne de connexion.

Codet de retour

0 (réussite) ou 1 (échec)

Notes

sp_migrate_user_to_contained crée l’utilisateur de base de données autonome avec mot de passe, quelles que soient les propriétés ou autorisations de la connexion. Par exemple, la procédure peut réussir si la connexion est désactivée ou si l’utilisateur a refusé l’autorisation CONNECT à la base de données.

sp_migrate_user_to_contained a les restrictions suivantes.

  • Le nom d'utilisateur ne doit pas déjà exister dans la base de données.

  • Les utilisateurs intégrés, par exemple dbo et guest, ne peuvent pas être convertis.

  • L’utilisateur ne peut pas être spécifié dans la clause EXECUTE AS d’une procédure stockée signée.

  • L’utilisateur ne peut pas posséder de procédure stockée qui inclut la clause EXECUTE AS OWNER .

  • sp_migrate_user_to_contained ne peut pas être utilisé dans une base de données système.

Sécurité

Lors de la migration d’utilisateurs, veillez à ne pas désactiver ou supprimer toutes les connexions d’administrateur de l’instance de SQL Server. Si toutes les connexions sont supprimées, consultez Connecter à SQL Server lorsque les Administration istrateurs système sont verrouillés.

Si la connexion BUILTIN\Administration istrators est présente, les administrateurs peuvent se connecter en démarrant leur application à l’aide de l’option Exécuter en tant qu’Administration istrator.

Autorisations

Requiert l’autorisation CONTROL SERVER .

Exemples

R. Migration d'un seul utilisateur

L’exemple suivant migre une connexion SQL Server nommée Barry, vers un utilisateur de base de données autonome avec mot de passe. L’exemple ne modifie pas le nom d’utilisateur et conserve la connexion activée.

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

B. Migration de tous les utilisateurs de la base de données avec des comptes de connexion vers des utilisateurs de base de données autonome sans comptes de connexion

L’exemple suivant migre tous les utilisateurs basés sur des connexions SQL Server vers des utilisateurs de base de données autonome avec des mots de passe. L'exemple exclut les comptes de connexion qui ne sont pas activés. L'exemple doit être exécuté dans la base de données autonome.

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 ;  

Voir aussi

Migrer vers une base de données partiellement autonome
Bases de données autonomes