סקירה כללית
משימת העברה של SQL Server
לא מעבירה נתוני התחברות של משתמשים ושרתים במסד הנתונים. לכן, מקורות שמכילים אובייקטים שהוגדרו על ידי משתמשים עם פסקה EXECUTE AS '[database_user_name]' לא יועברו לרפליקה החדשה של Cloud SQL, כי המשתמשים עדיין לא קיימים שם. כתוצאה מכך, תהליך ההעברה הכולל ייכשל.
לדוגמה:
CREATE OR ALTER PROCEDURE dbo.example WITH EXECUTE AS 'some_user' AS BEGIN … END
אי אפשר להעביר את הפרוצדורה המאוחסנת הזו כי אי אפשר להעביר את המשתמש some_user. הסיבה לכך היא שהמשתמש לא קיים במסד הנתונים של היעד.
כדי לזהות אילו אובייקטים משתמשים בסעיף EXECUTE AS '[database_user_name]' במסד הנתונים של המקור, משתמשים בשאילתות האלה ובודקים אם יש להם משתמשים במסד הנתונים של היעד.
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
כדי להריץ משימת העברה ממקור שכולל מטא-נתונים כאלה, צריך ליצור את המשתמשים במכונת היעד של Cloud SQL לפני שמתחילים את משימת ההעברה.