Présentation
Une tâche de migration SQL Server
ne migre pas les données de connexion de l'utilisateur de la base de données et du serveur. Par conséquent,
les sources contenant des objets définis par des utilisateurs avec la clause EXECUTE AS '[database_user_name]' ne seront pas migrées vers la nouvelle réplique Cloud SQL, car les utilisateurs n'y existent pas encore. Par conséquent, le processus de migration global échouera.
Exemple :
CREATE OR ALTER PROCEDURE dbo.example WITH EXECUTE AS 'some_user' AS BEGIN … END
Cette procédure stockée ne sera pas migrée, car l'utilisateur some_user ne peut pas être migré. En effet, l'utilisateur n'existe pas dans la base de données cible.
Pour identifier les objets qui utilisent la clause EXECUTE AS '[database_user_name]' dans votre base de données source, utilisez ces requêtes et
vérifiez si des utilisateurs existent pour eux dans la base de données de destination.
SELECT s.name AS schema_name, o.name AS object_name, p.name AS user_name
FROM sys.sql_modules m
INNER JOIN sys.objects o ON o.object_id = m.object_id
INNER JOIN sys.schemas s ON s.schema_id = o.schema_id
INNER JOIN sys.database_principals p ON p.principal_id = m.execute_as_principal_id
Pour exécuter une tâche de migration à partir d'une source qui inclut de telles métadonnées, créez les utilisateurs sur votre instance Cloud SQL de destination avant de démarrer votre tâche de migration.