Funktionsweise beim Verwalten von Ablaufdaten für Abonnements und Metadatencleanup bei der Mergereplikation

Ein Mergepublikations-Abonnement läuft ab, wenn es nicht innerhalb der Beibehaltungsdauer mit dem Verleger synchronisiert wird. Die Standardbeibehaltungsdauer beträgt 14 Tage; sie wird über die Parameter @retention und @retention_period_unit von sp_addmergepublication (Transact-SQL) festgelegt. Der @retention_period_unit-Parameter erfordert einen Publikationskompatibilitätsgrad von mindestens 90RTM. Bei Abonnenten, die frühere Versionen von Microsoft SQL Server ausführen, ist der @retention_period_unit-Parameter immer auf 'Tag' festgelegt. Weitere Informationen zum Kompatibilitätsgrad bei Mergepublikationen finden Sie im entsprechenden Abschnitt im Thema Verwenden mehrerer Versionen von SQL Server in einer Replikationstopologie.

Wenn ein Abonnement abläuft, muss es erneut initialisiert werden, da Metadaten für das Abonnement entfernt werden. Weitere Informationen dazu finden Sie im Abschnitt zum Metadatencleanup weiter unten in diesem Thema. Abonnements, die nicht erneut initialisiert werden, werden von dem Auftrag für den Cleanup abgelaufener Abonnements, der auf dem Verleger ausgeführt wird, gelöscht. Dieser Auftrag wird standardmäßig einmal pro Tag ausgeführt, und es werden dabei alle Pushabonnements gelöscht, die in einem Zeitraum, der der doppelten Beibehaltungsdauer der Publikation entspricht, nicht synchronisiert wurden. Beispiel:

  • Wenn eine Publikation eine Beibehaltungsdauer von 14 Tagen aufweist, kann ein Abonnement ablaufen, wenn es nicht innerhalb von 14 Tagen synchronisiert wurde.
    Wenn auf dem Verleger SQL Server 2005 ausgeführt wird und der Agent für das Abonnement aus SQL Server 2005 stammt, läuft ein Abonnement nur ab, wenn Änderungen an den Daten in der Partition dieses Abonnements vorgenommen wurden. Nehmen wir beispielsweise an, dass ein Abonnent Kundendaten nur für Kunden in Deutschland empfängt. Falls die Beibehaltungsdauer auf 14 Tage festgelegt wurde, läuft das Abonnement nur dann am Tag 14 ab, wenn während der letzten 14 Tage Änderungen an den deutschen Kundendaten vorgenommen wurden.
  • 14 bis 27 Tage nach der letzten Synchronisierung kann das Abonnement erneut initialisiert werden.
  • 28 Tage nach der letzten Synchronisierung wird das Abonnement vom Auftrag für den Cleanup abgelaufener Abonnements gelöscht. Wenn ein Pushabonnement abläuft, wird es vollständig entfernt. Bei Pullabonnements ist dies nicht der Fall. Sie müssen einen Cleanup der Pullabonnements auf dem Abonnenten ausführen. Weitere Informationen finden Sie unter How to: Delete a Pull Subscription (Replication Transact-SQL Programming).

Überlegungen zum Festlegen der Publikationsbeibehaltungsdauer

Beachten Sie beim Festlegen der Beibehaltungsdauer für Mergepublikationen Folgendes:

  • Der Cleanup der Metadaten für die Mergereplikation hängt von der Beibehaltungsdauer der Publikation ab:
    • Die Replikation kann den Cleanup von Metadaten aus den Publikations- und Abonnementdatenbanken erst ausführen, wenn das Ablaufdatum erreicht ist. Geben Sie keinen zu hohen Wert für die Beibehaltungsdauer an, da dies zu einer Beeinträchtigung der Replikationsleistung führen kann. Es wird empfohlen, eine niedrigere Einstellung zu verwenden, wenn Sie zuverlässig einschätzen können, dass alle Abonnenten innerhalb dieser Zeitspanne regelmäßig synchronisiert werden.
    • Es ist möglich, anzugeben, dass Abonnements nie ablaufen (Wert 0 für @retention). Es wird jedoch nachdrücklich empfohlen, diesen Wert nicht zu verwenden, da sonst kein Cleanup der Metadaten ausgeführt werden kann.
  • Die Beibehaltungsdauer für alle Wiederveröffentlichungen muss auf einen Wert festgelegt werden, der gleich oder kleiner ist als die auf dem ursprünglichen Verleger festgelegte Beibehaltungsdauer. Wenn Sie alternative Synchronisierungspartner verwenden, empfiehlt es sich, dieselben Werte für die Beibehaltungsdauer für Publikationen auf allen Verlegern und ihren alternativen Synchronisierungspartner zu verwenden. Das Verwenden unterschiedlicher Werte kann zu mangelnder Konvergenz der Daten führen. Wenn Sie die Beibehaltungsdauer der Publikation ändern müssen, initialisieren Sie den Abonnenten erneut, um sicherzustellen, dass die Daten konvergieren.
  • Wenn die Beibehaltungsdauer der Publikation nach einem Cleanup erhöht und für ein Abonnement ein Mergevorgang mit dem Verleger versucht wird (auf dem die Metadaten bereits gelöscht wurden), läuft das Abonnement aufgrund der erhöhten Beibehaltungsdauer nicht ab. Allerdings verfügt der Verleger nicht über ausreichende Metadaten zum Downloaden der Änderungen auf den Abonnenten. Dies führt zu mangelnder Konvergenz der Daten.

Metadatencleanup

Bei der Mergereplikation wird der Cleanup von Metadaten von der gespeicherten Prozedur sp_mergemetadataretentioncleanup (Transact-SQL) ausgeführt; der Zeitpunkt des Cleanups ist von der Beibehaltungsdauer der Publikation abhängig. Wenn der Merge-Agent für ein Abonnement ausgeführt wird, wird jedes Mal die Cleanupprozedur aufgerufen. Die Prozedur entfernt Metadaten, die älter sind als die Beibehaltungsdauer, aus den folgenden Systemtabellen:

Diese Tabellen werden von allen Publikationen einer Publikationsdatenbank verwendet. Ist mehr als eine Publikation vorhanden, wird immer die längste Beibehaltungsdauer verwendet, um zu bestimmen, welche Metadaten entfernt werden können.

Siehe auch

Konzepte

Funktionsweise der Mergereplikation
Erneutes Initialisieren eines Abonnements

Hilfe und Informationen

Informationsquellen für SQL Server 2005