트랜잭션 아티클 - 스키마 변경 내용을 반영하도록 다시 생성
적용 대상: SQL Server Azure SQL Managed Instance
기본적으로 트랜잭션 복제는 게시의 각 테이블 아티클에 대해 내부 프로시저로 생성된 저장 프로시저를 통해 구독자에서 모든 데이터 변경 내용을 적용합니다. 3개의 프로시저(삽입, 업데이트 및 삭제에 대해 각각 하나씩)가 구독자에 복사되고 삽입, 업데이트 또는 삭제가 구독자에 복제되면 실행됩니다. SQL Server 게시자의 테이블에 대한 스키마 변경이 수행되면 복제는 새 프로시저가 새 스키마와 일치하도록 동일한 내부 스크립팅 프로시저 집합을 호출하여 이러한 프로시저를 자동으로 다시 생성합니다(Oracle 게시자는 스키마 변경 내용 복제가 지원되지 않음).
사용자 지정 프로시저를 지정하여 하나 이상의 기본 프로시저를 바꿀 수도 있습니다. 스키마 변경이 프로시저에 영향을 줄 경우 사용자 지정 프로시저를 변경해야 합니다. 예를 들어 프로시저가 스키마 변경에서 삭제된 열을 참조하는 경우 해당 열에 대한 참조를 프로시저에서 제거해야 합니다. 복제에서 새 사용자 지정 프로시저를 구독자에게 전파하는 방법에는 두 가지가 있습니다.
첫 번째 옵션은 사용자 지정 스크립팅 프로시저를 사용하여 복제에서 사용하는 기본값을 바꾸는 것입니다.
sp_addarticle(Transact-SQL)을 실행하는 경우
@schema_option
0x02비트를 true로 설정해야 합니다.@type
매개 변수에 'insert', 'update' 또는 'delete' 값,@value
매개 변수에 사용자 지정 스크립팅 프로시저의 이름을 지정하고 sp_register_custom_scripting(Transact-SQL)을 실행합니다.
다음에 스키마를 변경하면 복제는 이 저장 프로시저를 호출하여 사용자가 새로 정의한 사용자 지정 저장 프로시저에 대한 정의를 스크립팅한 다음 프로시저를 각 구독자로 전파합니다.
두 번째 옵션은 새 사용자 지정 프로시저 정의가 포함된 스크립트를 사용하는 것입니다.
sp_addarticle(Transact-SQL)을 실행하는 경우, 복제는 구독자에서 사용자 지정 프로시저가 자동으로 생성되지 않도록
@schema_option
0x02비트를 false로 설정합니다.각 스키마가 변경되기 전에 새 스크립트 파일을 만들고 sp_register_custom_scripting(Transact-SQL)를 실행하여 복제에 스크립트를 등록합니다.
@type
매개 변수의 'custom_script' 값과@value
매개 변수에 대한 게시자의 스크립트 경로를 지정합니다.
다음에 관련 스키마를 변경할 때 이 스크립트는 DDL 명령과 동일한 트랜잭션 내의 각 구독자에서 실행됩니다. 스키마가 변경되면 스크립트의 등록이 취소됩니다. 후속 스키마 변경 이후에 스크립트를 실행하려면 해당 스크립트를 다시 등록해야 합니다.