트랜잭션 아티클 - 스키마 변경 반영을 위해 다시 생성Transactional Articles - Regenerate to Reflect Schema Changes

기본적으로 트랜잭션 복제는 게시의 각 테이블 아티클에 대해 내부 프로시저로 생성된 저장 프로시저를 통해 구독자에서 모든 데이터 변경 내용을 적용합니다.By default transactional replication makes all data changes at Subscribers through stored procedures that are generated by internal procedures for each table article in the publication. 3개의 프로시저(삽입, 업데이트 및 삭제에 대해 각각 하나씩)가 구독자에 복사되고 삽입, 업데이트 또는 삭제가 구독자에 복제되면 실행됩니다.The three procedures (one each for inserts, updates, and deletes) are copied to the Subscriber and execute when an insert, update, or delete is replicated to the Subscriber. SQL ServerSQL Server 게시자의 테이블에서 스키마를 변경하면 복제는 새 프로시저가 새 스키마와 일치하도록 동일한 내부 스크립팅 프로시저 집합을 호출하여 이러한 프로시저를 자동으로 다시 생성합니다. Oracle 게시자의 경우 스키마 변경 내용의 복제는 지원되지 않습니다.When a schema change is made to a table on a SQL ServerSQL Server Publisher, replication regenerates these procedures automatically by calling the same set of internal scripting procedures so that the new procedures match the new schema (replication of schema changes is not supported for Oracle Publishers).

또한 사용자 지정 프로시저를 지정하여 기본 프로시저 중 하나 이상을 바꿀 수 있습니다.It is also possible to specify custom procedures to replace one or more of the default procedures. 스키마 변경으로 인해 프로시저가 영향을 받는 경우에는 사용자 지정 프로시저를 변경해야 합니다.The custom procedures should be changed if the schema change will affect the procedure. 예를 들어 프로시저가 스키마 변경에서 삭제된 열을 참조하는 경우 해당 열에 대한 참조를 프로시저에서 제거해야 합니다.For example, if a procedure references a column that is dropped in a schema change, references to the column should be removed from the procedure. 복제가 새 사용자 지정 프로시저를 구독자에 전파하는 방법에는 두 가지가 있습니다.There are two ways for replication to propagate a new custom procedure to Subscribers:

  • 첫 번째 옵션은 사용자 지정 스크립팅 프로시저를 사용하여 복제에서 사용하는 기본값을 바꾸는 것입니다.The first option is to use a custom scripting procedure to replace the defaults used by replication:

    1. sp_addarticle(Transact-SQL)을 실행할 때 @schema_option 0x02비트가 true인지 확인합니다.When executing sp_addarticle (Transact-SQL), ensure the @schema_option 0x02 bit is to true.

    2. sp_register_custom_scripting(Transact-SQL)을 실행하고 @type 매개 변수에 대해 'insert', 'update' 또는 'delete' 값을 지정하고 @value 매개 변수에 대해 사용자 지정 스크립팅 프로시저의 이름을 지정합니다.Execute sp_register_custom_scripting (Transact-SQL) and specify a value of 'insert', 'update', or 'delete' for the parameter @type and the name of the custom scripting procedure for the parameter @value.

      다음에 스키마를 변경하면 복제는 이 저장 프로시저를 호출하여 사용자가 새로 정의한 사용자 지정 저장 프로시저에 대한 정의를 스크립팅한 다음 프로시저를 각 구독자로 전파합니다.The next time a schema change is made, replication calls this stored procedure to script out the definition for the new user defined custom stored procedure, and then propagates the procedure to each Subscriber.

  • 두 번째 옵션은 새 사용자 지정 프로시저 정의를 포함하는 스크립트를 사용하는 것입니다.The second option is to use a script that contains a new custom procedure definition:

    1. sp_addarticle(Transact-SQL)을 실행할 때는 복제가 구독자에서 사용자 지정 프로시저를 자동으로 생성하지 않도록 @schema_option 0x02비트를 false로 설정합니다.When executing sp_addarticle (Transact-SQL), set the @schema_option 0x02 bit to false so replication does not automatically generate custom procedures at the Subscriber.

    2. 각 스키마 변경 전에 새 스크립트 파일을 만들고 sp_register_custom_scripting(Transact-SQL)을 실행하여 이 스크립트를 복제에 등록합니다.Before each schema change, create a new script file and register the script with replication by executing sp_register_custom_scripting (Transact-SQL). @type 매개 변수에 대해 'custom_script' 값을 지정하고 @value 매개 변수에 대해 게시자의 스크립트 경로를 지정합니다.Specify a value of 'custom_script' for the parameter @type and the path to the script on the Publisher for the parameter @value.

      다음에 관련 스키마를 변경하면 이 스크립트는 동일한 트랜잭션 내 각 구독자에서 DDL 명령으로 실행됩니다.The next time a relevant schema change is made, this script executes on each Subscriber within the same transaction as the DDL command. 스키마를 변경한 다음에는 스크립트 등록이 취소됩니다.After the schema change is made, the script is unregistered. 후속 스키마 변경 이후에 스크립트를 실행하려면 해당 스크립트를 다시 등록해야 합니다.You must re-register the script to have it executed after a subsequent schema change.

참고 항목See Also

트랜잭션 아티클에 대한 변경 내용을 전파하는 방법 지정 Specify How Changes Are Propagated for Transactional Articles
게시 데이터베이스의 스키마 변경 Make Schema Changes on Publication Databases