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.