병합 복제에서 구독 만료 및 메타데이터 정리를 관리하는 방법

병합 게시에 대한 구독은 게시 보존 기간 내에 게시자와 동기화되지 않으면 만료됩니다. 기본 보존 기간은 14일이며 이는 sp_addmergepublication(Transact-SQL)@retention@retention_period_unit 매개 변수를 사용하여 설정합니다. @retention_period_unit을 사용하려면 게시 호환성 수준이 90RTM 이상이어야 합니다. 이전 버전의 Microsoft SQL Server를 실행하는 구독자의 경우 @retention_period_unit은 항상 'day'로 설정됩니다. 호환성 수준에 대한 자세한 내용은 복제 토폴로지에 SQL Server의 여러 버전 사용 항목의 "병합 게시에 대한 호환성 수준" 섹션을 참조하십시오.

구독이 만료되면 구독의 메타데이터가 제거되므로 구독을 다시 초기화해야 합니다. 자세한 내용은 이 항목의 "메타데이터 정리" 섹션을 참조하십시오. 다시 초기화되지 않은 구독은 게시자에서 실행되는 만료된 구독 정리 작업에 의해 삭제됩니다. 기본적으로 이 작업은 매일 실행됩니다. 이 작업을 통해 게시 보존 기간의 2배에 해당하는 기간 동안 동기화되지 않은 모든 밀어넣기 구독이 제거됩니다. 예를 들면 다음과 같습니다.

  • 게시의 보존 기간이 14일이면 14일 이내에 동기화되지 않은 구독은 만료될 수 있습니다.

    게시자에서 SQL Server 2005 이상 버전이 실행되고 있으며 구독의 에이전트를 SQL Server 2005 이상 버전에서 가져온 경우 해당 구독의 파티션에 있는 데이터가 변경된 경우에만 구독이 만료됩니다. 예를 들어 구독자가 독일에 거주하는 고객에 대해서만 고객 데이터를 받는다고 가정합니다. 보존 기간을 14일로 설정한 경우 마지막 14일 내에 독일 거주 고객의 데이터가 변경된 경우에만 14일 후에 구독이 만료됩니다.

  • 마지막 동기화가 수행되고 14일부터 27일 내에 구독을 다시 초기화할 수 있습니다.

  • 마지막 동기화가 수행되고 28일이 경과되면 만료된 구독 정리 작업에 의해 구독이 삭제됩니다. 밀어넣기 구독이 만료되면 완전히 제거되지만 끌어오기 구독은 그렇지 않습니다. 끌어오기 구독은 구독자에서 정리해야 합니다. 자세한 내용은 방법: 끌어오기 구독 삭제(복제 Transact-SQL 프로그래밍)를 참조하십시오.

게시 보존 기간 설정 시 고려 사항

병합 게시에 대한 보존 기간을 설정할 때 다음 사항을 고려하십시오.

  • 병합 복제 메타데이터의 정리는 다음과 같이 게시 보존 기간에 따라 달라집니다.

    • 보존 기간에 도달하기 전까지는 복제 작업을 통해 게시 및 구독 데이터베이스의 메타데이터를 정리할 수 없습니다. 보존 기간을 너무 길게 설정하면 복제 성능이 저하될 수 있으므로 주의해야 합니다. 보존 기간 내에 모든 구독자가 정기적으로 동기화될 가능성이 있으면 보존 기간을 낮은 값으로 설정하는 것이 좋습니다.

    • @retention에 값 0을 지정하여 구독이 만료되지 않도록 지정할 수 있지만 이 경우 메타데이터를 정리할 수 없으므로 이 값은 사용하지 않도록 합니다.

  • 재게시자의 보존 기간은 원래 게시자에 설정한 보존 기간과 동일하거나 더 낮은 값으로 설정해야 합니다. 대체 동기화 파트너를 사용하는 경우 게시자 및 모든 대체 동기화 파트너에 대해 동일한 게시 보존 기간 값을 사용해야 합니다. 다른 보존 기간 값을 사용하면 데이터가 제대로 일치하지 못할 수 있습니다. 게시 보존 기간 값을 변경해야 하는 경우 데이터가 제대로 일치될 수 있도록 구독자를 다시 초기화합니다.

  • 정리 후에 게시 보존 기간이 늘어나고 구독이 메타데이터가 이미 삭제된 게시자와 병합하려고 하면 늘어난 보존 기간으로 인해 구독은 만료되지 않습니다. 그러나 게시자에는 구독자에 대한 변경 내용을 다운로드할 만큼의 충분한 메타데이터가 없으므로 데이터가 제대로 일치되지 못할 수 있습니다.

메타데이터 정리

병합 복제의 메타데이터 정리는 sp_mergemetadataretentioncleanup(Transact-SQL) 저장 프로시저에 의해 수행됩니다. 정리 타이밍은 게시 보존 기간을 기반으로 합니다. 병합 에이전트는 구독에 대해 실행될 때마다 정리 프로시저를 호출합니다. 이 프로시저는 다음 시스템 테이블에서 게시 보존 기간보다 오래된 메타데이터를 제거합니다.

이러한 테이블은 게시 데이터베이스의 모든 게시에 사용됩니다. 게시가 둘 이상 있을 경우 메타데이터 제거 시기를 결정하는 데 항상 가장 긴 보존 기간이 사용됩니다.