Panoramica
Un job di migrazione di SQL Server
non esegue la migrazione dei dati di accesso utente e del server del database. Pertanto,
la migrazione delle origini che contengono oggetti definiti dagli utenti con la clausola EXECUTE AS '[database_user_name]' non verrà eseguita nella nuova replica Cloud SQL, perché gli utenti non esistono ancora lì. Di conseguenza, il processo di migrazione complessivo non andrà a buon fine.
Ad esempio:
CREATE OR ALTER PROCEDURE dbo.example WITH EXECUTE AS 'some_user' AS BEGIN … END
Non verrà eseguita la migrazione di questa procedura memorizzata perché non è possibile eseguire la migrazione dell'utente some_user. Questo accade perché l'utente non esiste nel database di destinazione.
Per identificare gli oggetti che utilizzano la clausola EXECUTE AS '[database_user_name]' nel database di origine, utilizza queste query e controlla se sono presenti utenti nel database di destinazione.
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
Per eseguire un job di migrazione da un'origine che include questi metadati, crea gli utenti nell'istanza Cloud SQL di destinazione prima di avviare il job di migrazione.