sys.sp_mergecleanupmetadata (Transact-SQL)

Dotyczy:SQL Server

Powinien być używany wyłącznie w topologiach replikacji, które obejmują serwery działające na wersjach SQL Server przed SQL Server 2000 (8.x) Service Pack 1. sp_mergecleanupmetadata pozwala administratorom na usuwanie metadanych w tabelach MSmerge_genhistory, MSmerge_contents, i MSmerge_tombstone systemowych. Ta procedura składowana jest wykonywana w programie Publisher w bazie danych publikacji.

Transact-SQL konwencje składni

Syntax

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

Arguments

[ @publication = ] N'publikacja'

Nazwa publikacji. @publication to nazwa sysname z domyślnym , %która usuwa metadane wszystkich publikacji. Publikacja musi już istnieć, jeśli jest wyraźnie określona.

[ @reinitialize_subscriber = ] N'reinitialize_subscriber'

Określa, czy ponownie inicjalizować abonenta. @reinitialize_subscriber to nvarchar(5), z domyślnym obciążeniem true.

  • Jeśli true, subskrypcje są oznaczane do ponownej inicjalizacji.
  • Jeśli false, subskrypcje nie są oznaczone do ponownej inicjalizacji.

Zwracanie wartości kodu

0 (powodzenie) lub 1 (niepowodzenie).

Remarks

sp_mergecleanupmetadatapowinien być używany wyłącznie w topologiach replikacji, które obejmują serwery uruchamiające wersje SQL Server przed SQL Server 2000 (8.x) Service Pack 1. Topologie obejmujące tylko SQL Server 2000 (8.x) Service Pack 1 lub nowszy powinny korzystać z automatycznego czyszczenia metadanych opartego na przechowywaniu. Podczas uruchamiania tej procedury zapisanej należy pamiętać o niezbędnym i potencjalnie dużym przyrostie pliku logu na komputerze, na którym procedura jest uruchomiona.

Po sp_mergecleanupmetadata uruchomieniu, domyślnie wszystkie subskrypcje u Subskrybentów publikacji, które mają metadane zapisane w MSmerge_genhistory, MSmerge_contents i są oznaczone MSmerge_tombstone do ponownej inicjalizacji, wszelkie oczekujące zmiany u Subskrybenta są tracone, a aktualny snapshot jest oznaczany jako przestarzały.

Jeśli w bazie danych jest wiele publikacji, a któraś z nich korzysta z nieskończonego okresu przechowywania publikacji (@retention jest ), 0uruchomienie sp_mergecleanupmetadata nie usuwa metadanych śledzących zmiany w replikacji scalania dla bazy. Z tego powodu należy zachować nieskończoną retencję publikacji z ostrożnością.

Podczas wykonywania tej procedury zapisywanej możesz wybrać, czy ponownie inicjalizować Subscribers, ustawiając parametr @reinitialize_subscriber na true (domyślny) lub false. Jeśli sp_mergecleanupmetadata zostanie wykonany z parametrem @reinitialize_subscriber ustawionym na , truesnapshot jest ponownie aplikowany do Subskrybenta, nawet jeśli subskrypcja została utworzona bez początkowego snapshotu (na przykład, jeśli dane i schemat snapshotu zostały zastosowane ręcznie lub już istniały u Subskrybenta). Ustawianie parametru należy false stosować ostrożnie, ponieważ jeśli publikacja nie zostanie ponownie zainicjalizowana, musisz zadbać o synchronizację danych w Publisher i Subscriber.

Niezależnie od wartości @reinitialize_subscriber, nie udaje się, sp_mergecleanupmetadata jeśli trwające procesy scalania próbują przesłać zmiany do Publisher lub ponownie publikującego Subskrybenta w momencie wywołania procedury przechowywanej.

Wykonaj sp_mergecleanupmetadata z @reinitialize_subscriber = N'true'

  1. Zaleca się, choć nie jest to wymagane, aby wstrzymać wszystkie aktualizacje baz danych publikacji i subskrypcji. Jeśli aktualizacje będą kontynuowane, wszelkie aktualizacje dokonane na subskrybentze od ostatniego połączenia są tracone po ponownym inicjalizowaniu publikacji, ale konwergencja danych jest zachowana.

  2. Wykonaj merge, uruchamiając Merge Agent. Zalecamy użycie opcji poleceń -Validate agent przy każdym Subskrybentie podczas uruchamiania Merge Agent. Jeśli korzystasz z łączenia w trybie ciągłym, zobacz w sekcji Specjalne uwagi dotyczące łączenia w trybie ciągłym , w tej sekcji.

  3. Po zakończeniu wszystkich scaleń wykonaj sp_mergecleanupmetadata.

  4. Wykonaj sp_reinitmergepullsubscription na wszystkich subskrybentach za pomocą subskrypcji "nazwię" lub anonimowej, aby zapewnić zbieżność danych.

  5. Jeśli korzystasz z łączenia w trybie ciągłym, zobacz w sekcji Specjalne uwagi dotyczące łączenia w trybie ciągłym , w tej sekcji.

  6. Generuj pliki migawek dla wszystkich publikacji scalonych na wszystkich poziomach. Jeśli spróbujesz scalić bez wcześniejszej regeneracji snapshota, pojawia się komunikat o jego ponownej generacji.

  7. Zrób kopię zapasową bazy publikacji. Brak tego może spowodować niepowodzenie połączenia po przywróceniu bazy publikacji.

Wykonaj sp_mergecleanupmetadata z @reinitialize_subscriber = N'false'

  1. Wstrzymaj wszelkie aktualizacje baz danych publikacji i subskrypcji.

  2. Wykonaj merge, uruchamiając Merge Agent. Zalecamy korzystanie z opcji wiersza -Validate poleceń agenta przy każdym Subskrybentze podczas uruchamiania Merge Agent. Jeśli uruchamiasz scalania w trybie ciągłym, zobacz w artykule Specjalne uwagi dotyczące łączenia w trybie ciągłym .

  3. Po zakończeniu wszystkich scaleń wykonaj sp_mergecleanupmetadata.

  4. Jeśli korzystasz z łączenia w trybie ciągłym, zobacz w sekcji Specjalne uwagi dotyczące łączenia w trybie ciągłym , w tej sekcji.

  5. Generuj pliki migawek dla wszystkich publikacji scalonych na wszystkich poziomach. Jeśli spróbujesz scalić bez wcześniejszej regeneracji snapshota, pojawia się komunikat o jego ponownej generacji.

  6. Zrób kopię zapasową bazy publikacji. Brak tego może spowodować niepowodzenie połączenia po przywróceniu bazy publikacji.

Szczególne uwagi dotyczące ciągłych łączeń w trybie ciągłym

Jeśli uruchamiasz łączenia w trybie ciągłym, musisz albo:

  • Zatrzymaj Merge Agent, a następnie wykonaj kolejne merge bez określonego parametru-Continuous.

  • Wyłącz publikację z , sp_changemergepublication aby upewnić się, że wszelkie połączenia w trybie ciągłym, które są sprawdzane pod kątem statusu publikacji, nie zapowiedzą się.

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

Po ukończeniu kroku 3 uruchamiania sp_mergecleanupmetadata, wznowisz łączenie trybu ciągłego w zależności od sposobu ich zatrzymania. Któryś z dwóch:

  • Dodaj parametr -Continuous z powrotem dla Merge Agent.

  • Ponownie aktywuj publikację za pomocą sp_changemergepublication.

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

Permissions

Tylko członkowie roli stałego serwera systemowego lub stałej db_owner stałej bazy danych mogą wykonywać sp_mergecleanupmetadata.

Aby korzystać z tej procedury przechowywanej, Publisher musi mieć zainstalowany SQL Server 2000 (8.x). Subskrybenci muszą korzystać z SQL Server 2000 (8.x) lub SQL Server 7.0, Service Pack 2.