Überprüfen von Partitionsinformationen für einen Mergeabonnenten

Beim Definieren eines parametrisierten Zeilenfilters für eine Mergeveröffentlichung kommt eine Funktion zum Einsatz, die die Abonnenteninformationen, wie z. B. den Benutzernamen des Abonnenten, referenziert. Standardmäßig überprüft die Replikation die Abonnenteninformationen auf der Basis dieser Funktion. Erst dann erfolgt die jeweilige Synchronisierung. Die Überprüfung erfolgt auch immer dann, wenn ein Snapshot auf den Abonnenten angewendet wird. Mit der Überprüfung wird sichergestellt, dass die Daten ordnungsgemäß für die einzelnen Abonnenten partitioniert sind. Das Überprüfungsverhalten wird von der validate_subscriber_info-Veröffentlichungseigenschaft gesteuert, die mithilfe von sp_changemergepublication (Transact-SQL) oder auf der Seite Abonnementoptionen des Dialogfeldes Veröffentlichungseigenschaften geändert werden kann.Weitere Informationen zum Ändern der Veröffentlichungseigenschaften finden Sie unter Vorgehensweise: Anzeigen und Ändern von Veröffentlichungseigenschaften (Replikationsprogrammierung mit Transact-SQL) und Vorgehensweise: Anzeigen und Ändern der Eigenschaften von Veröffentlichungen und Artikeln (SQL Server Management Studio).

Funktionsweise der Partitionsüberprüfung

Wenn eine Veröffentlichung z. B. mithilfe der SUSER_SNAME()-Funktion gefiltert wird, weist der Merge-Agent auf der Basis der für den SUSER_SNAME()-Ausdruck geltenden Daten jedem Abonnenten den Anfangssnapshot zu.

Wenn die Überprüfung aktiviert ist und der Abonnent für die nächste Synchronisierung erneut eine Verbindung mit dem Verleger herstellt, überprüft der Merge-Agent die Informationen auf dem Abonnenten und stellt sicher, dass die Partition auf den Abonnenten mit der Partition identisch ist, die im Anfangssnapshot gesendet wurde. Bei allen nachfolgenden Merge- bzw. Snapshotanwendungen überprüft der Merge-Agent die Partition der einzelnen Abonnenten.

Wenn der Merge-Agent feststellt, dass die im Filterausdruck verwendete Funktion einen anderen Wert zurückgibt als im Anfangssnapshot, schlägt die Merge- bzw. Snapshotanwendung fehl, und das Abonnement des Abonnenten muss möglicherweise erneut initialisiert werden. Diese erneute Initialisierung kann nötig werden, um Probleme zu vermeiden, die sich aus der Änderung der Mergeeinstellungen eines Abonnenten ergeben können. Es reicht möglicherweise aber auch aus, die Informationen auf dem Abonnenten, wie z. B. den Benutzernamen, auf den Wert zum Zeitpunkt des ursprünglichen Snapshots zurückzusetzen.

Beim Überprüfen einer Partition gleicht der Merge-Agent aber nicht nur die Partition mit den Werten ab, die von den in den Filterausdrücken verwendeten Funktionen zurückgegeben werden, sondern er kontrolliert auch, ob der Snapshot generiert wurde, bevor Änderungen vorgenommen wurden, durch die er ungültig geworden ist. Solche Änderungen können z. B. Metadaten-Cleanupoperationen oder Schemaänderungen sein. Wenn ein partitionierter Snapshot zu alt ist, gibt der Merge-Agent einen Fehler zurück. In diesem Fall müssen Sie auf der Grundlage eines aktuellen regulären Snapshots einen neuen partitionierten Snapshot für diesen Abonnenten generieren.