SQL Server-Migrationsjob mit Metadaten mit EXECUTE AS-Klausel erstellen und ausführen

Übersicht

Bei einem SQL Server-Migrationsjob werden keine Anmeldedaten für Datenbanknutzer und Server migriert. Quellen, die von Nutzern mit der EXECUTE AS '[database_user_name]'-Klausel definierte Objekte enthalten, werden daher nicht in das neue Cloud SQL-Replikat migriert, da die Nutzer dort noch nicht vorhanden sind. Dies führt dazu, dass der gesamte Migrationsprozess fehlschlägt.

Beispiel:

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

Diese gespeicherte Prozedur wird nicht migriert, da der Nutzer some_user nicht migriert werden kann. Das liegt daran, dass der Nutzer in der Zieldatenbank nicht vorhanden ist.

Um festzustellen, für welche Objekte in Ihrer Quelldatenbank die Klausel EXECUTE AS '[database_user_name]' verwendet wird, verwenden Sie diese Abfragen und prüfen Sie, ob es in der Zieldatenbank Nutzer dafür gibt.

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

Wenn Sie einen Migrationsjob von einer Quelle ausführen möchten, die solche Metadaten enthält, müssen Sie die Nutzer in Ihrer Cloud SQL-Zielinstanz erstellen, bevor Sie den Migrationsjob starten.