기존 게시에 아티클 추가 및 삭제

적용 대상:SQL ServerAzure SQL Managed Instance

게시를 만든 후에는 아티클을 추가하고 삭제할 수 있습니다. 아티클 추가 작업은 언제든지 수행할 수 있지만 아티클 삭제에 필요한 동작은 복제 유형과 아티클 삭제 시기에 따라 다릅니다.

아티클 추가

아티클을 추가하려면 게시에 아티클을 추가합니다. 게시에 대한 새 스냅샷 만들고 구독을 동기화하여 새 아티클에 대한 스키마 및 데이터를 적용합니다.

참고 항목

병합 게시에 아티클을 추가하고 기존 아티클이 새 아티클에 따라 달라지는 경우 sp_addmergearticle 및 sp_changemergearticle @processing_order 매개 변수를 사용하여 두 아티클에 대한 처리 순서를 지정해야 합니다. 다음 시나리오를 고려합니다. 테이블을 게시하지만 테이블에서 참조하는 함수는 게시하지 않습니다. 함수를 게시하지 않으면 구독자에서 테이블을 만들 수 없습니다. 게시에 함수를 추가할 경우에는 sp_addmergearticle@processing_order 매개 변수에 값 1을 지정하고 sp_changemergearticle@processing_order 매개 변수에 값 2를 지정하며 @article매개 변수에는 테이블 이름을 지정합니다. 이 처리 순서를 사용하면 함수에 종속된 테이블이 생성되기 전에 해당 함수가 구독자에서 생성됩니다. 함수 번호가 테이블 번호보다 낮은 경우 각 아티클에 다른 번호를 사용할 수 있습니다.

  1. 다음 방법 중 하나를 사용하여 하나 이상의 아티클을 추가합니다.

  2. 아티클을 게시에 추가한 후에는 게시에 대한 새 스냅샷 만들어야 합니다(매개 변수가 있는 필터가 있는 병합 게시인 경우 모든 파티션). 그러면 배포 에이전트 또는 병합 에이전트가 새 아티클에 대한 스키마 및 데이터를 구독자로 복사합니다. 이때 전체 게시를 다시 초기화하지는 않습니다.

    • 새 스냅샷 만들려면 초기 스냅샷 만들기 및 적용을 참조하세요.

    • 매개 변수가 있는 필터를 사용하여 병합 게시에 대한 새 스냅샷 만들려면 매개 변수가 있는 필터를 사용하여 병합 게시에 대한 스냅샷 만들기를 참조하세요.

  3. 스냅샷 만든 후 구독을 동기화하여 새 문서의 스키마와 데이터를 복사합니다.

    • 밀어넣기 구독을 동기화하려면 밀어넣기 구독 동기화를 참조 하세요.

    • 끌어오기 구독을 동기화하려면 끌어오기 구독 동기화를 참조 하세요.

아티클 삭제

아티클은 언제든지 게시에서 삭제할 수 있지만 다음 동작을 고려해야 합니다.

  • 게시에서 아티클을 삭제해도 구독 데이터베이스에서 게시 데이터베이스 또는 해당 개체의 개체가 제거되지는 않습니다. 필요한 경우 DROP <개체> 를 사용하여 이러한 개체를 제거합니다. 외래 키 제약 조건을 통해 게시된 다른 아티클과 관련된 아티클을 삭제하는 경우 테이블을 구독자에서 수동으로 삭제하거나 주문형 스크립트 실행을 사용하여 적절한 DROP <Object> 문을 포함하는 스크립트를 지정하는 것이 좋습니다. 자세한 내용은 동기화 중에 스크립트 실행(복제 Transact-SQL 프로그래밍)을 참조하세요.

  • 호환성 수준이 90RTM 이상인 병합 게시의 경우에는 언제든지 아티클을 삭제할 수 있지만 새 스냅샷이 필요합니다. 또한:

    • 아티클이 조인 필터 또는 논리적 레코드 관계의 부모 아티클인 경우 관계를 먼저 삭제해야 하므로 다시 초기화해야 합니다.

    • 아티클에 게시의 마지막 매개 변수가 있는 필터가 있는 경우 구독을 다시 초기화해야 합니다.

  • 호환성 수준이 90RTM보다 낮은 병합 게시의 경우 구독의 초기 동기화 전에 특별한 고려 사항 없이 아티클을 삭제할 수 있습니다. 하나 이상의 구독이 동기화된 후 아티클이 삭제되면 구독을 삭제하고 다시 만들고 동기화해야 합니다.

  • 스냅샷 또는 트랜잭션 게시의 경우 구독을 만들기 전에 특별한 고려 사항 없이 아티클을 삭제할 수 있습니다. 하나 이상의 구독을 만든 후 아티클을 삭제하는 경우 구독을 삭제하고, 다시 만들고, 동기화해야 합니다. 구독 삭제에 대한 자세한 내용은 게시 구독 및 sp_dropsubscription(Transact-SQL)을 참조하세요. sp_dropsubscription 전체 구독이 아닌 구독에서 단일 아티클을 삭제할 수 있습니다.

  1. 게시에서 아티클을 삭제하려면 아티클을 삭제하고 게시에 대한 새 스냅샷 만듭니다. 아티클을 삭제하면 현재 스냅샷이 무효화되므로 새 스냅샷을 만들어야 합니다.

    • 게시에서 아티클을 삭제하려면 아티클 추가 및 게시에서 아티클 삭제(SQL Server Management Studio) 또는 아티클 삭제를 참조하세요.
  2. 게시에서 아티클을 삭제한 후 게시에 대한 새 스냅샷 만들어야 합니다(매개 변수가 있는 필터가 있는 병합 게시인 경우 모든 파티션).

    • 새 스냅샷 만들려면 초기 스냅샷 만들기 및 적용을 참조하세요.

    • 매개 변수가 있는 필터를 사용하여 병합 게시에 대한 새 스냅샷 만들려면 매개 변수가 있는 필터를 사용하여 병합 게시에 대한 스냅샷 만들기를 참조하세요.

위에서 설명한 것처럼 일부 경우 아티클을 삭제하려면 구독을 삭제하고 다시 만들고 동기화해야 합니다. 자세한 내용은 게시 구독 및 데이터 동기화를 참조하세요.

참고 항목

SQL Server 2014(12.x) 서비스 팩 2 이상 및 SQL Server 2016(13.x) 서비스 팩 1 이상에서는 트랜잭션 복제에 참여하는 문서에 DROP TABLE DDL 명령을 사용하여 테이블 삭제를 지원합니다. DROP TABLE DDL이 게시에서 지원되는 경우 DROP TABLE 작업은 게시 및 데이터베이스에서 테이블을 삭제합니다. 로그 판독기 에이전트는 삭제된 테이블의 배포 데이터베이스에 대해 정리 명령을 게시하고 게시자 메타데이터를 정리합니다. 로그 판독기에서 삭제된 테이블을 참조하는 모든 로그 레코드를 처리하지 않은 경우 삭제된 테이블과 연결된 새 명령은 무시됩니다. 이미 처리된 레코드는 배포 데이터베이스에 전달됩니다. 로그 판독기에서 사용되지 않는(삭제된) 아티클을 클린 전에 배포 에이전트 처리하는 경우 구독자 데이터베이스에 적용할 수 있습니다. 모든 트랜잭션 복제 게시에 대한 기본 설정은 DROP TABLE DDL을 지원하지 않는 것입니다. KB 3170123 이 개선 사항에 대한 자세한 내용을 가지고 있습니다.

참고 항목

데이터 및 데이터베이스 개체 게시
구독 다시 초기화
게시 데이터베이스의 스키마 변경