Funktionsweise beim Verwalten von Ablaufdaten für Abonnements und Metadatencleanup bei der Mergereplikation
Ein Mergeveröffentlichungs-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 Veröffentlichungskompatibilitä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 Mergeveröffentlichungen 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 Veröffentlichung entspricht, nicht synchronisiert wurden. Beispiel:
Wenn eine Veröffentlichung 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 oder eine höhere Version ausgeführt wird und der Agent für das Abonnement aus SQL Server 2005 oder einer höheren Version 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 Vorgehensweise: Löschen eines Pullabonnements (Replikationsprogrammierung mit Transact-SQL).
Überlegungen zum Festlegen der Veröffentlichungsbeibehaltungsdauer
Beachten Sie beim Festlegen der Beibehaltungsdauer für Mergeveröffentlichungen Folgendes:
Der Cleanup der Metadaten für die Mergereplikation hängt von der Beibehaltungsdauer der Veröffentlichung ab:
Die Replikation kann den Cleanup von Metadaten aus den Veröffentlichungs- 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 Veröffentlichungen 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 Veröffentlichung ändern müssen, initialisieren Sie den Abonnenten erneut, um sicherzustellen, dass die Daten konvergieren.
Wenn die Beibehaltungsdauer der Veröffentlichung 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 Herunterladen 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 Veröffentlichung 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 Veröffentlichungen einer Veröffentlichungsdatenbank verwendet. Ist mehr als eine Veröffentlichung vorhanden, wird immer die längste Beibehaltungsdauer verwendet, um zu bestimmen, welche Metadaten entfernt werden können.