스키마 변경 내용을 반영하기 위해 사용자 지정 트랜잭션 프로시저 다시 생성

기본적으로 트랜잭션 복제는 게시의 각 테이블 아티클에 대해 내부 프로시저로 생성된 저장 프로시저를 통해 구독자에서 모든 데이터 변경 내용을 적용합니다. 3개의 프로시저(삽입, 업데이트 및 삭제에 대해 각각 하나씩)가 구독자에 복사되고 삽입, 업데이트 또는 삭제가 구독자에 복제되면 실행됩니다. SQL Server 게시자의 테이블에서 스키마를 변경하면 복제는 새 프로시저가 새 스키마와 일치하도록 동일한 내부 스크립팅 프로시저 집합을 호출하여 이러한 프로시저를 자동으로 다시 생성합니다. Oracle 게시자의 경우 스키마 변경 내용의 복제는 지원되지 않습니다.

또한 사용자 지정 프로시저를 지정하여 기본 프로시저 중 하나 이상을 바꿀 수 있습니다. 스키마 변경으로 인해 프로시저가 영향을 받는 경우에는 사용자 지정 프로시저를 변경해야 합니다. 예를 들어 프로시저가 스키마 변경에서 삭제된 열을 참조하는 경우 해당 열에 대한 참조를 프로시저에서 제거해야 합니다. 복제가 새 사용자 지정 프로시저를 구독자에 전파하는 방법에는 두 가지가 있습니다.

  • 첫 번째 옵션은 사용자 지정 스크립팅 프로시저를 사용하여 복제에서 사용하는 기본값을 바꾸는 것입니다.

    1. sp_addarticle(Transact-SQL)을 실행할 때는 @schema_option 0x02비트를 true로 설정해야 합니다.

    2. sp_register_custom_scripting(Transact-SQL)을 실행하고 @type 매개 변수에 대해 'insert', 'update' 또는 'delete' 값을 지정하고 @value 매개 변수에 대해 사용자 지정 스크립팅 프로시저의 이름을 지정합니다.

    다음에 스키마를 변경하면 복제는 이 저장 프로시저를 호출하여 사용자가 새로 정의한 사용자 지정 저장 프로시저에 대한 정의를 스크립팅한 다음 프로시저를 각 구독자로 전파합니다.

  • 두 번째 옵션은 새 사용자 지정 프로시저 정의를 포함하는 스크립트를 사용하는 것입니다.

    1. sp_addarticle(Transact-SQL)을 실행할 때는 복제가 구독자에서 사용자 지정 프로시저를 자동으로 생성하지 않도록 @schema_option 0x02비트를 false로 설정합니다.

    2. 각 스키마 변경 전에 새 스크립트 파일을 만들고 sp_register_custom_scripting(Transact-SQL)을 실행하여 이 스크립트를 복제에 등록합니다. @type 매개 변수에 대해 'custom_script' 값을 지정하고 @value 매개 변수에 대해 게시자의 스크립트 경로를 지정합니다.

    다음에 관련 스키마를 변경하면 이 스크립트는 동일한 트랜잭션 내 각 구독자에서 DDL 명령으로 실행됩니다. 스키마를 변경한 다음에는 스크립트 등록이 취소됩니다. 후속 스키마 변경 이후에 스크립트를 실행하려면 해당 스크립트를 다시 등록해야 합니다.