sp_mergecleanupmetadata(Transact-SQL)
적용 대상: SQL Server
SQL Server 2000(8.x) 서비스 팩 1 이전 버전을 실행하는 서버를 포함하는 복제 토폴로지에서만 사용해야 합니다. sp_mergecleanupmetadata
를 사용하면 관리자가 및 MSmerge_contents
MSmerge_tombstone
시스템 테이블의 메타데이터를 MSmerge_genhistory
정리할 수 있습니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
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 2000(8.x) 서비스 팩 1 이상을 포함하는 토폴로지에서는 자동 보존 기반 메타데이터 정리를 사용해야 합니다. 이 저장 프로시저를 실행할 때 저장 프로시저가 실행 중인 컴퓨터에서 로그 파일의 필요하고 잠재적으로 큰 증가에 유의하세요.
실행 후 sp_mergecleanupmetadata
기본적으로 메타데이터가 저장 MSmerge_genhistory
MSmerge_contents
되고 MSmerge_tombstone
다시 초기화되도록 표시된 게시 구독자의 모든 구독은 구독자에서 보류 중인 변경 내용이 손실되고 현재 스냅샷은 사용되지 않는 것으로 표시됩니다.
데이터베이스에 여러 게시가 있고 해당 게시 중 하나가 무한 게시 보존 기간(@retention0
)을 사용하는 경우 데이터베이스 sp_mergecleanupmetadata
에 대한 병합 복제 변경 내용 추적 메타데이터가 정리되지 않습니다. 이러한 이유로 무한 게시 보존을 신중하게 사용합니다.
이 저장 프로시저를 실행할 때 @reinitialize_subscriber 매개 변수 true
를 (기본값)false
로 설정하여 구독자를 다시 초기화할지 여부를 선택할 수 있습니다. @reinitialize_subscriber 매개 변수를 설정하여 true
실행하는 경우 sp_mergecleanupmetadata
초기 스냅샷 없이 구독을 만든 경우에도(예: 스냅샷 데이터 및 스키마가 수동으로 적용되었거나 구독자에 이미 있는 경우) 구독자에서 스냅샷이 다시 적용됩니다. 게시를 다시 초기화하지 않으면 게시자와 구독자의 데이터가 동기화되었는지 확인해야 하므로 매개 변수 false
를 신중하게 사용해야 합니다.
@reinitialize_subscribersp_mergecleanupmetadata
값에 관계없이 저장 프로시저가 호출될 때 게시자 또는 재게시 구독자에 변경 내용을 업로드하려는 진행 중인 병합 프로세스가 있는 경우 실패합니다.
= N'true'를 @reinitialize_subscriber 사용하여 sp_mergecleanupmetadata 실행
게시 및 구독 데이터베이스에 대한 모든 업데이트를 중지하는 것이 좋지만 필수는 아닙니다. 업데이트가 계속될 경우 게시를 다시 초기화할 때 마지막 병합 이후 구독자에 업데이트된 내용이 모두 손실되지만 데이터 일치성은 유지됩니다.
병합 에이전트를 실행하여 병합을 실행합니다. 병합 에이전트 실행할 때 각 구독자에서 -Validate 에이전트 명령줄 옵션을 사용하는 것이 좋습니다. 연속 모드 병합을 실행하는 경우 이 섹션의 뒷부분에 있는 연속 모드 병합에 대한 특별 고려 사항을 참조하세요.
모든 병합이 완료되면 .를 실행
sp_mergecleanupmetadata
합니다.명명된 또는 익명 끌어오기 구독을 사용하여 모든 구독자에서 실행
sp_reinitmergepullsubscription
하여 데이터 수렴을 보장합니다.연속 모드 병합을 실행하는 경우 이 섹션의 뒷부분에 있는 연속 모드 병합에 대한 특별 고려 사항을 참조하세요.
모든 수준에서 관련된 모든 병합 게시에 대한 스냅샷 파일을 다시 생성합니다. 먼저 스냅샷을 다시 생성하지 않고 병합하려고 하면 스냅샷을 다시 생성하라는 메시지가 표시됩니다.
게시 데이터베이스를 백업합니다. 이렇게 하지 않으면 게시 데이터베이스를 복원한 후 병합이 실패할 수 있습니다.
= N'false'를 @reinitialize_subscriber 사용하여 sp_mergecleanupmetadata 실행
게시 및 구독 데이터베이스에 대한 모든 업데이트를 중지합니다.
병합 에이전트를 실행하여 병합을 실행합니다. 병합 에이전트 실행할 때 각 구독자에서 에이전트 명령줄 옵션을 사용하는
-Validate
것이 좋습니다. 연속 모드 병합을 실행하는 경우 이 문서의 뒷부분에 있는 연속 모드 병합에 대한 특별 고려 사항을 참조하세요.모든 병합이 완료되면 .를 실행
sp_mergecleanupmetadata
합니다.연속 모드 병합을 실행하는 경우 이 섹션의 뒷부분에 있는 연속 모드 병합에 대한 특별 고려 사항을 참조하세요.
모든 수준에서 관련된 모든 병합 게시에 대한 스냅샷 파일을 다시 생성합니다. 먼저 스냅샷을 다시 생성하지 않고 병합하려고 하면 스냅샷을 다시 생성하라는 메시지가 표시됩니다.
게시 데이터베이스를 백업합니다. 이렇게 하지 않으면 게시 데이터베이스를 복원한 후 병합이 실패할 수 있습니다.
연속 모드 병합에 대한 특별 고려 사항
연속 모드 병합을 실행하는 경우 다음 중 하나를 수행해야 합니다.
병합 에이전트 중지한 다음 매개 변수를 지정하지 않고 다른 병합을
-Continuous
수행합니다.게시
sp_changemergepublication
상태를 폴링하는 연속 모드 병합이 실패하도록 게시를 비활성화합니다.EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive';
실행 sp_mergecleanupmetadata
3단계를 완료한 경우 중지한 방법에 따라 연속 모드 병합을 다시 시작합니다. 다음 중 하나
병합 에이전트 대한 -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를 실행해야 합니다.