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_containedpeut ê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 sur les connexions d’instance SQL Server actuelles.

Attention

Soyez prudent lors de l’utilisation 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’username'

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 la 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 cette option keep_name pour conserver le nom d’utilisateur de la base de données pendant la migration. Permet copy_login_name de 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'

Permet de désactiver la connexion dans la master base de données. Pour vous connecter lorsque la connexion est désactivée, la connexion doit fournir le nom de la base de données autonome dans le initial catalog cadre du chaîne de connexion.

Valeurs des codes de retour

0 (réussite) or 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 peut pas déjà exister dans la base de données.
  • Les utilisateurs intégrés, par exemple dbo et invité, ne peuvent pas être convertis.
  • L’utilisateur ne peut pas être spécifié dans la EXECUTE AS clause d’une procédure stockée signée.
  • L’utilisateur ne peut pas posséder de procédure stockée qui inclut la EXECUTE AS OWNER clause.
  • 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 Se connecter à SQL Server lorsque les administrateurs système sont verrouillés.

Si la BUILTIN\Administrators connexion 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

Nécessite l’autorisation CONTROL SERVER.

Exemples

R. Migrer 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.

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

B. Migrer tous les utilisateurs de base de données avec des connexions vers des utilisateurs de base de données autonomes sans 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 autonomes avec mots de passe. L’exemple exclut les connexions qui ne sont pas activées. 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
INNER 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;