Ringkasan
Tugas migrasi SQL Server
tidak memigrasikan data login server dan pengguna database. Oleh karena itu,
sumber yang berisi objek yang ditentukan oleh pengguna dengan klausa EXECUTE AS '[database_user_name]' tidak akan dimigrasikan ke replika Cloud SQL baru, karena pengguna belum
ada di sana. Akibatnya, keseluruhan proses migrasi akan gagal.
Contoh:
CREATE OR ALTER PROCEDURE dbo.example WITH EXECUTE AS 'some_user' AS BEGIN … END
Prosedur tersimpan ini tidak akan dimigrasikan karena pengguna some_user tidak dapat dimigrasikan. Hal ini karena pengguna tidak ada di database target.
Untuk mengidentifikasi objek mana yang menggunakan klausa EXECUTE AS '[database_user_name]' di database sumber, gunakan kueri ini dan
periksa apakah ada pengguna untuk objek tersebut di database tujuan.
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
Untuk menjalankan tugas migrasi dari sumber yang menyertakan metadata tersebut, buat pengguna di instance Cloud SQL tujuan sebelum memulai tugas migrasi.