Panoramica
Un job di migrazione di SQL Server
non esegue la migrazione dei dati di accesso dell'utente del database e del server. Pertanto,
le origini che contengono oggetti definiti da utenti con la clausola EXECUTE AS '[database_user_name]' non verranno migrate nella nuova replica Cloud SQL, perché gli utenti non esistono ancora. Di conseguenza, l'intero processo di migrazione non andrà a buon fine.
Ad esempio:
CREATE OR ALTER PROCEDURE dbo.example WITH EXECUTE AS 'some_user' AS BEGIN … END
Questa stored procedure non verrà migrata perché l'utente some_user non può essere migrato. Questo 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
verifica 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.