기존 게시에 대한 아티클 추가 및 삭제Add Articles to and Drop Articles from Existing Publications

게시가 생성된 후에는 아티클을 추가 및 삭제할 수 있습니다.After a publication is created, it is possible to add and drop articles. 아티클 추가 작업은 언제든지 수행할 수 있지만 아티클 삭제에 필요한 동작은 복제 유형과 아티클 삭제 시기에 따라 다릅니다.Articles can be added at any time, but the actions required for dropping articles depend on the type of replication and when the article is dropped.

아티클 추가Adding Articles

아티클을 추가하려면 아티클을 게시에 추가하고, 게시에 대한 새 스냅숏을 만들고, 구독을 동기화하여 새 아티클에 대한 스키마 및 데이터를 적용해야 합니다.Adding an article involves: adding the article to the publication; creating a new snapshot for the publication; synchronizing the subscription to apply the schema and data for the new article.

참고

병합 게시에 아티클을 추가하고 기존 아티클이 새 아티클에 종속된 경우 @processing_ordersp_changemergearticle@processing_order매개 변수를 사용하여 두 아티클의 처리 순서를 지정해야 합니다.If you add an article to a merge publication and an existing article depends on the new article, you must specify a processing order for both articles using the @processing_order parameter of sp_addmergearticle and sp_changemergearticle. 다음과 같은 시나리오를 고려해 보십시오. 테이블을 게시하지만 테이블이 참조하는 함수는 게시하지 않는 경우가 있습니다.Consider the following scenario: you publish a table but you do not publish a function that the table references. 함수를 게시하지 않을 경우 구독자에서 테이블을 만들 수 없습니다.If you do not publish the function, the table cannot be created at the Subscriber. 게시에 함수를 추가할 경우에는 sp_addmergearticle@processing_ordersp_changemergearticle을 지정하고 sp_changemergearticle@processing_order@processing_order를 지정하며 @article을 참조하십시오.When you add the function to the publication: specify a value of 1 for the @processing_order parameter of sp_addmergearticle; and specify a value of 2 for the @processing_order parameter of sp_changemergearticle, specifying the table name for the parameter @article. 이 처리 순서를 사용하면 함수에 종속된 테이블이 생성되기 전에 해당 함수가 구독자에서 생성됩니다.This processing order ensures that you create the function at the Subscriber before the table that depends on it. 함수 번호가 테이블 번호보다 낮은 경우 각 아티클에 다른 번호를 사용할 수 있습니다.You can use different numbers for each article, as long as the number for the function is lower than the number for the table.

  1. 다음 방법 중 하나를 사용하여 하나 이상의 아티클을 추가합니다.Add one or more articles through one of the following methods:

  2. 아티클을 게시에 추가한 후에는 게시에 대한 새 스냅숏을 만들어야 합니다. 매개 변수가 있는 필터가 포함된 병합 게시인 경우에는 파티션도 모두 만들어야 합니다.After adding an article to a publication, you must create a new snapshot for the publication (and all partitions if it is a merge publication with parameterized filters). 그러면 배포 에이전트 또는 병합 에이전트가 새 아티클에 대한 스키마 및 데이터를 구독자로 복사합니다. 이때 전체 게시를 다시 초기화하지는 않습니다.The Distribution Agent or Merge Agent then copies the schema and data for the new article to the Subscriber (it does not reinitialize the entire publication).

  3. 스냅숏이 생성된 후에 구독을 동기화하여 새 아티클에 대한 스키마 및 데이터를 복사합니다.After the snapshot is created, synchronize the subscription to copy the schema and data for the new article.

아티클 삭제Dropping Articles

언제든지 아티클을 게시에서 삭제할 수 있지만 다음 동작을 고려해야 합니다.Articles can be dropped from a publication at any time, but you must take into account the following behaviors:

  • 게시에서 아티클을 삭제해도 해당 개체가 게시 데이터베이스에서 삭제되거나 구독 데이터베이스의 해당 개체가 삭제되지 않습니다.Dropping an article from a publication does not remove the object from the publication database or the corresponding object from the subscription database. 필요한 경우 DROP <Object>를 사용하여 이러한 개체를 제거합니다.Use DROP <Object> to remove these objects if necessary. 외래 키 제약 조건을 통해 다른 게시된 아티클과 관련된 아티클을 삭제하는 경우에는 테이블을 구독자에서 수동으로 삭제하거나, 적절한 DROP <Object> 문이 포함된 스크립트를 지정하고 요청 시 실행하여 테이블을 삭제하는 것이 좋습니다.When you drop an article that is related to other published articles through foreign key constraints, we recommend that you drop the table at the Subscriber manually or by using on-demand script execution: specify a script that includes the appropriate DROP <Object> statements. 자세한 내용은 동기화 중 스크립트 실행(복제 Transact-SQL 프로그래밍)을 참조하세요.For more information, see Execute Scripts During Synchronization (Replication Transact-SQL Programming).

  • 호환성 수준이 90RTM 이상인 병합 게시의 경우에는 언제든지 아티클을 삭제할 수 있지만 새 스냅숏이 필요합니다.For merge publications with a compatibility level of 90RTM or higher, articles can be dropped at any time, but a new snapshot is required. 또한 다음 작업도 수행해야 합니다.Additionally:

    • 아티클이 조인 필터 또는 논리적 레코드 관계에서 부모 아티클인 경우에는 해당 관계를 먼저 삭제해야 하므로 재초기화가 필요합니다.If an article is a parent article in a join filter or logical record relationship, the relationships must be dropped first, which requires reinitialization.

    • 게시에서 아티클에 매개 변수가 있는 마지막 필터가 있는 경우에는 구독을 다시 초기화해야 합니다.If an article has the last parameterized filter in a publication, subscriptions must be reinitialized.

  • 호환성 수준이 90RTM 이하인 병합 게시의 경우에는 구독의 초기 동기화 이전에 특별한 고려 사항 없이 아티클을 삭제할 수 있습니다.For merge publications with a compatibility level lower than 90RTM, articles can be dropped with no special considerations prior to the initial synchronization of subscriptions. 하나 이상의 구독이 동기화된 후에 아티클을 삭제하면 해당 구독을 삭제한 뒤 다시 만들고 동기화해야 합니다.If an article is dropped after one or more subscriptions is synchronized, the subscriptions must be dropped, re-created, and synchronized.

  • 스냅숏 또는 트랜잭션 게시의 경우에는 구독을 만들기 전에 특별한 고려 사항 없이 아티클을 삭제할 수 있습니다.For snapshot or transactional publications, articles can be dropped with no special considerations prior to subscriptions being created. 하나 이상의 구독이 생성된 후에 아티클을 삭제하면 해당 구독을 삭제한 뒤 다시 만들고 동기화해야 합니다.If an article is dropped after one or more subscriptions is created, the subscriptions must be dropped, recreated, and synchronized. 구독 삭제에 대한 자세한 내용은 게시 구독sp_dropsubscription(Transact-SQL)을 참조하세요.For more information about dropping subscriptions, see Subscribe to Publications and sp_dropsubscription (Transact-SQL). sp_dropsubscription 을 사용하면 전체 구독 대신 구독에서 단일 아티클을 삭제할 수 있습니다.sp_dropsubscription allows you to drop a single article from the subscription rather than the entire subscription.

  1. 게시에서 아티클을 삭제하려면 아티클을 삭제하고 게시에 대한 새 스냅숏을 만들어야 합니다.Dropping an article from a publication involves dropping the article and creating a new snapshot for the publication. 아티클을 삭제하면 현재 스냅숏이 무효화되므로 새 스냅숏을 만들어야 합니다.Dropping an article invalidates the current snapshot; therefore a new snapshot must be created.

  2. 게시에서 아티클을 삭제한 후에는 게시에 대한 새 스냅숏을 만들어야 합니다. 매개 변수가 있는 필터가 포함된 병합 게시인 경우에는 파티션도 모두 만들어야 합니다.After dropping an article from a publication, you must create a new snapshot for the publication (and all partitions if it is a merge publication with parameterized filters).

    위에서 언급한 대로 경우에 따라서는 아티클을 삭제하면 구독을 삭제한 뒤 다시 만들고 동기화해야 합니다.As noted above, in some cases dropping an article requires subscriptions to be dropped, recreated, and then synchronized. 자세한 내용은 게시 구독데이터 동기화를 참조하세요.For more information, see Subscribe to Publications and Synchronize Data.

    참고

    SQL Server 2014SQL Server 2014 서비스 팩 2 이상 및 SQL Server 2016SQL Server 2016 서비스 팩 1 이상에서는 트랜잭션 복제에 참여하는 아티클에 대한 DROP TABLE DLL 명령을 사용한 테이블 삭제를 지원합니다. SQL Server 2014SQL Server 2014 Service Pack 2 or above and SQL Server 2016SQL Server 2016 Service Pack 1 or above support dropping a table using DROP TABLE DLL command for articles participating in Transactional Replication. 게시에서 DROP TABLE DDL이 지원되면 DROP TABLE 작업은 게시 및 데이터베이스에서 테이블을 삭제합니다.If a DROP TABLE DDL is supported by the publication(s), then the DROP TABLE operation will drop the table from the publication and the database. 로그 판독기 에이전트는 삭제된 테이블의 배포 데이터베이스에 대해 정리 명령을 게시하고 게시자 메타데이터를 정리합니다.The log reader agent will post a cleanup command for the distribution database of the dropped table and do the cleanup of the publisher metadata. 로그 판독기가 삭제된 테이블을 참조하는 일부 로그 레코드를 처리하지 않은 경우에는 삭제된 테이블과 연결된 새 명령을 무시합니다.If the log reader hasn't processed all the log records that refer to the dropped table, then it will ignore new commands that are associated with the dropped table. 이미 처리된 레코드는 배포 데이터베이스로 전달됩니다.Already processed records will be delivered to distribution database. 로그 판독기가 오래된(삭제된) 아티클을 정리하기 전에 배포 에이전트가 이 레코드를 처리할 경우 이 레코드는 구독자 데이터베이스에 적용될 수 있습니다.They may be applied on Subscriber database if the Distribution Agent processes them before Log Reader cleans up the obsolete (dropped) article(s). 모든 트랜잭션 복제 게시에 대한 기본 설정은 DROP TABLE DLL을 지원하지 않는 것입니다.The default setting for all transactional replication publications is to not support DROP TABLE DLL. KB 3170123에서 이 향상된 기능을 자세히 설명합니다.KB 3170123 has more details about this improvement.

관련 항목:See Also

데이터 및 데이터베이스 개체 게시 Publish Data and Database Objects
구독 다시 초기화 Reinitialize Subscriptions
게시 데이터베이스의 스키마 변경Make Schema Changes on Publication Databases