sp_migrate_user_to_contained (Transact-SQL)

S’applique à : ouiSQL Server (toutes les versions prises en charge)

Convertit un utilisateur de la base de données mappé à un compte de connexion SQL Server, en 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 d’origine SQL Server , 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 à relation contenant-contenu. sp_migrate_user_to_contained peut être utilisé avant de déplacer la base de données à relation contenant-contenu vers une autre instance du Moteur de base de données SQL Server pour éliminer les dépendances sur les SQL Server connexions d’instance actuelles.

Notes

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

[@rename = ] N'copy_login_name' | N'keep_name'
Lorsqu’un utilisateur de base de données basé sur un compte de connexion a un nom d’utilisateur différent de celui de la 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 le nouvel utilisateur de base de données à relation contenant-contenu 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 à relation contenant-contenu 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 à relation contenant-contenu avec le mot de passe, quelles que soient les propriétés ou les autorisations de la connexion. Par exemple, la procédure peut être effectuée si la connexion est désactivée ou si l’utilisateur se voit refuser l’autorisation de connexion à 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 une procédure stockée qui comprend 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é

Lorsque vous migrez des utilisateurs, veillez à ne pas désactiver ou supprimer tous les comptes de connexion de l'administrateur dans l'instance de SQL Server. si toutes les connexions sont supprimées, consultez Connecter à SQL Server lorsque les administrateurs système sont verrouillés.

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

Autorisations

Requiert l’autorisation CONTROL SERVER .

Exemples

R. Migration d'un seul utilisateur

L'exemple suivant migre un compte de connexion SQL Server nommé 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 comptes de connexion SQL Server vers des utilisateurs de base de données autonome avec 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