Criar e executar um job de migração do SQL Server que contém metadados com uma cláusula EXECUTE AS

Visão geral

Um job de migração do SQL Server não migra dados de login do usuário do banco de dados e do servidor. Portanto, as fontes que contêm objetos definidos pelos usuários com a cláusula EXECUTE AS '[database_user_name]' não serão migradas para a nova réplica do Cloud SQL, porque os usuários ainda não existem. Como resultado, o processo de migração geral falhará.

Exemplo:

CREATE OR ALTER PROCEDURE dbo.example
WITH EXECUTE AS 'some_user'
AS BEGIN
…
END

Esse procedimento armazenado não será migrado porque o usuário some_user não pode ser migrado. Isso ocorre porque o usuário não existe no banco de dados de destino.

Para identificar quais objetos estão usando a cláusula EXECUTE AS '[database_user_name]' no banco de dados de origem, use estas consultas e verifique se há usuários para eles no banco de dados de destino.

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

Para executar um job de migração de uma origem que inclui esses metadados, crie os usuários na instância de destino do Cloud SQL antes de iniciar o job de migração.