Übersicht
Bei einem SQL Server-Migrationsjob werden keine Datenbanknutzer- und Serveranmeldedaten migriert. Daher werden Quellen, die von Nutzern mit der EXECUTE AS '[database_user_name]'-Klausel definierte Objekte enthalten, nicht in das neue Cloud SQL-Replikat migriert, da die Nutzer dort noch nicht vorhanden sind. Daher schlägt der gesamte Migrationsprozess fehl.
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.
Verwenden Sie die folgenden Abfragen, um herauszufinden, welche Objekte in Ihrer Quelldatenbank die EXECUTE AS '[database_user_name]'-Klausel verwenden, und prüfen Sie, ob es Nutzer dafür in der Zieldatenbank 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 aus einer Quelle ausführen möchten, die solche Metadaten enthält, erstellen Sie die Nutzer in Ihrer Cloud SQL-Zielinstanz, bevor Sie den Migrationsjob starten.