다음을 통해 공유


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

적용 대상: SQL Server Azure SQL Managed Instance

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

아티클 추가

문서을 추가하려면 게시물에 문서을 추가합니다. 게시물에 대한 새 스냅샷 만들기 새 문서에 대한 스키마 및 데이터를 적용하도록 구독을 동기화합니다.

참고 항목

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

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

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

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

문서 삭제

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

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

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

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

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

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

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

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

  2. 게시물에서 문서을 삭제한 후 게시물에 대한 새 스냅샷을 만들어야 합니다(매개 변수가 있는 필터가 있는 병합 게시인 경우 모든 파티션).

위에서 설명한 것처럼 일부 경우 문서을 삭제하려면 구독을 삭제하고 다시 만들고 동기화해야 합니다. 자세한 정보는 게시물 구독데이터 동기화를 참조하세요.

참고 항목

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

참고 항목

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