Crie e execute uma tarefa de migração do SQL Server que contenha metadados com uma cláusula EXECUTE AS

Vista geral

Uma tarefa de migração do SQL Server não migra os dados de início de sessão do servidor e do utilizador da base de dados. Por conseguinte, as origens que contêm objetos definidos por utilizadores com a cláusula EXECUTE AS '[database_user_name]' não são migradas para a nova réplica do Cloud SQL, porque os utilizadores ainda não existem aí. Consequentemente, o processo de migração geral falha.

Por exemplo:

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

Este procedimento armazenado não vai ser migrado porque não é possível migrar o utilizador some_user. Isto deve-se ao facto de o utilizador não existir na base de dados de destino.

Para identificar que objetos estão a usar a cláusula EXECUTE AS '[database_user_name]' na sua base de dados de origem, use estas consultas e verifique se existem utilizadores para os mesmos na base 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 uma tarefa de migração a partir de uma origem que inclua esses metadados, crie os utilizadores na instância do Cloud SQL de destino antes de iniciar a tarefa de migração.