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
peut ê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;