EXECUTE AS 절이 있는 메타데이터가 포함된 SQL Server 마이그레이션 작업 만들기 및 실행

개요

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 인스턴스에서 사용자를 만듭니다.