Crea ed esegui un job di migrazione di SQL Server contenente metadati con una clausola EXECUTE AS

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.