sp_merge클린upmetadata(Transact-SQL)

적용 대상:SQL Server

SQL Server 2000(8.x) 서비스 팩 1 이전 버전의 SQL Server를 실행하는 서버를 포함하는 복제본(replica)tion 토폴로지에서만 사용해야 합니다. sp_mergecleanupmetadata는 관리자가 < a0/> 및 MSmerge_tombstone 시스템 테이블에서 메타데이터를 MSmerge_genhistoryMSmerge_contents클린 수 있도록 합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.

Transact-SQL 구문 표기 규칙

구문

sp_mergecleanupmetadata
    [ [ @publication = ] N'publication' ]
    [ , [ @reinitialize_subscriber = ] N'reinitialize_subscriber' ]
[ ; ]

인수

[ @publication = ] N'publication'

게시의 이름입니다. @publication 모든 게시에 대한 메타데이터를 클린 기본값%인 sysname입니다. 명시적으로 지정한 경우 게시가 이미 있어야 합니다.

[ @reinitialize_subscriber = ] N'reinitialize_subscriber'

구독자를 다시 초기화할지 여부를 지정합니다. @reinitialize_subscriber 기본값true인 nvarchar(5)입니다.

  • 이 경우 true구독이 다시 초기화로 표시됩니다.
  • 이 경우 false구독이 다시 초기화로 표시되지 않습니다.

반환 코드 값

0 (성공) 또는 1 (실패).

설명

sp_mergecleanupmetadata는 SQL Server 2000(8.x) 서비스 팩 1 이전 버전의 SQL Server를 실행하는 서버를 포함하는 복제본(replica)tion 토폴로지에서만 사용해야 합니다. SQL Server 2000(8.x) 서비스 팩 1 이상을 포함하는 토폴로지에서는 자동 보존 기반 메타데이터 클린up을 사용해야 합니다. 이 저장 프로시저를 실행할 때 저장 프로시저가 실행 중인 컴퓨터에서 로그 파일의 필요하고 잠재적으로 큰 증가에 유의하세요.

실행 후 sp_mergecleanupmetadata 기본적으로 메타데이터가 저장 MSmerge_genhistoryMSmerge_contents 되고 MSmerge_tombstone 다시 초기화되도록 표시된 게시 구독자의 모든 구독은 구독자에서 보류 중인 변경 내용이 손실되고 현재 스냅샷 사용되지 않는 것으로 표시됩니다.

데이터베이스에 여러 게시가 있고 해당 게시 중 하나가 무한 게시 보존 기간(@retention0)을 사용하는 경우 데이터베이스에 대한 병합 복제본(replica) 변경 내용 추적 메타데이터를 클린 sp_mergecleanupmetadata 않습니다. 이러한 이유로 무한 게시 보존을 신중하게 사용합니다.

이 저장 프로시저를 실행할 때 @reinitialize_subscriber 매개 변수 true 를 (기본값)false로 설정하여 구독자를 다시 초기화할지 여부를 선택할 수 있습니다. @reinitialize_subscriber 매개 변수를 설정하여 true실행하는 경우 sp_mergecleanupmetadata 초기 스냅샷 없이 구독을 만든 경우에도 구독자에서 스냅샷 다시 적용됩니다(예: 스냅샷 데이터와 스키마가 수동으로 적용되었거나 구독자에 이미 있는 경우). 게시를 다시 초기화하지 않으면 게시자와 구독자의 데이터가 동기화되었는지 확인해야 하므로 매개 변수 false 를 신중하게 사용해야 합니다.

@reinitialize_subscribersp_mergecleanupmetadata에 관계없이 저장 프로시저가 호출될 때 게시자 또는 재게시 구독자에 변경 내용을 업로드하려는 진행 중인 병합 프로세스가 있는 경우 실패합니다.

=N'true'를 사용하여 sp_merge클린upmetadata @reinitialize_subscriber 실행

  1. 필수는 아니지만 게시 및 구독 데이터베이스에 대한 모든 업데이트를 중지하는 것이 좋습니다. 업데이트가 계속될 경우 게시를 다시 초기화할 때 마지막 병합 이후 구독자에 업데이트된 내용이 모두 손실되지만 데이터 일치성은 유지됩니다.

  2. 병합 에이전트를 실행하여 병합을 실행합니다. 병합 에이전트 실행할 때 각 구독자에서 -Validate 에이전트 명령줄 옵션을 사용하는 것이 좋습니다. 연속 모드 병합을 실행하는 경우 이 섹션의 뒷부분에 있는 연속 모드 병합에 대한 특별 고려 사항을 참조하세요.

  3. 모든 병합이 완료되면 .를 실행 sp_mergecleanupmetadata합니다.

  4. 명명된 또는 익명 끌어오기 구독을 사용하여 모든 구독자에서 실행 sp_reinitmergepullsubscription 하여 데이터 수렴을 보장합니다.

  5. 연속 모드 병합을 실행하는 경우 이 섹션의 뒷부분에 있는 연속 모드 병합에 대한 특별 고려 사항을 참조하세요.

  6. 모든 수준에서 관련된 모든 병합 게시에 대한 스냅샷 파일을 다시 생성합니다. 먼저 스냅샷 다시 생성하지 않고 병합하려고 하면 스냅샷 다시 생성하라는 메시지가 표시됩니다.

  7. 게시 데이터베이스를 백업합니다. 이렇게 하지 않으면 게시 데이터베이스를 복원한 후 병합이 실패할 수 있습니다.

sp_merge클린 = N'false를 사용하여 @reinitialize_subscriber upmetadata' 실행

  1. 게시 및 구독 데이터베이스에 대한 모든 업데이트를 중지합니다.

  2. 병합 에이전트를 실행하여 병합을 실행합니다. 병합 에이전트 실행할 때 각 구독자에서 에이전트 명령줄 옵션을 사용하는 -Validate 것이 좋습니다. 연속 모드 병합을 실행하는 경우 이 문서의 뒷부분에 있는 연속 모드 병합에 대한 특별 고려 사항을 참조하세요.

  3. 모든 병합이 완료되면 .를 실행 sp_mergecleanupmetadata합니다.

  4. 연속 모드 병합을 실행하는 경우 이 섹션의 뒷부분에 있는 연속 모드 병합에 대한 특별 고려 사항을 참조하세요.

  5. 모든 수준에서 관련된 모든 병합 게시에 대한 스냅샷 파일을 다시 생성합니다. 먼저 스냅샷 다시 생성하지 않고 병합하려고 하면 스냅샷 다시 생성하라는 메시지가 표시됩니다.

  6. 게시 데이터베이스를 백업합니다. 이렇게 하지 않으면 게시 데이터베이스를 복원한 후 병합이 실패할 수 있습니다.

연속 모드 병합에 대한 특별 고려 사항

연속 모드 병합을 실행하는 경우 다음 중 하나를 수행해야 합니다.

  • 병합 에이전트 중지한 다음 매개 변수를 지정하지 않고 다른 병합을 -Continuous 수행합니다.

  • 게시 sp_changemergepublication 를 폴링하는 연속 모드 병합이 실패할 상태 있도록 게시를 비활성화합니다.

    EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive';
    

실행 sp_mergecleanupmetadata3단계를 완료한 경우 중지한 방법에 따라 연속 모드 병합을 다시 시작합니다. 다음 중 하나

  • 병합 에이전트 대한 -Continuous 매개 변수를 다시 추가합니다.

  • 를 사용하여 게시 sp_changemergepublication를 다시 활성화합니다.

    EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active'
    

사용 권한

sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버만 실행할 sp_mergecleanupmetadata수 있습니다.

이 저장 프로시저를 사용하려면 게시자가 SQL Server 2000(8.x)을 실행해야 합니다. 구독자는 SQL Server 2000(8.x) 또는 SQL Server 7.0, 서비스 팩 2를 실행해야 합니다.