2009-06-14 4 views
1

Ich habe ein Mergereplikationsszenario mit SQL2005 SP3 als Publisher und Distributor und Windows Mobile SQLCE 3.5 SP1 als Abonnenten.SQL Merge-Replikation: Wie kann ich feststellen, ob ein Datensatz repliziert wurde?

Der Replikationsfilter ist so, dass Zeilen aus einer der Tabellen (tblJobs) nur zu genau einem Gerät gehen. Nachdem das Gerät repliziert wurde, führt es sql aus, um die Spalte IsSynced boolean für alle heruntergeladenen Datensätze festzulegen. Anschließend wird es erneut repliziert.

Gibt es eine Möglichkeit, die zweite Replikation zu vermeiden und die IsSync-boolesche Spalte während der Replikation festgelegt haben? (Vielleicht zuerst herunterladen, die Flagge setzen, dann hochladen? Oder vielleicht den Replikationsvorgang beim Publisher/Distributor setzen?). Ich weiß nicht, wo die Haken für so etwas sind.

Erwähnenswert ist, dass die Tabelle ein Zeilenversionsfeld enthält.

Antwort

1

Der einfachste Weg festzustellen, ob ein Datensatz repliziert wurde, ist die MSmerge_contents-Tabelle zu überprüfen. Wenn die Zeile in dieser Tabelle vorhanden ist, wurde sie zuvor repliziert.

Natürlich, wenn Sie sicherstellen möchten, dass der Client die neueste Version der Zeile hat dann müssen Sie einige graben in den folgenden Tabellen für die Erzeugung Zahlen tun:

MSmerge_replinfo 
MSmerge_genhistory 
MSmerge_contents 
MSmerge_tombstone 

Jedes Mal, Daten geändert wurde, mergt die Mergereplikation diese Änderung nach, indem sie der Änderung eine neue Generation Nummer zuweist. Der Herausgeber führt dann eine Liste von Generationsnummern und der Generation, die jeder Teilnehmer erhalten hat.

Wenn Sie einfach eine Stapelaktualisierung von Zeilendaten auf dem Abonnenten durchführen, wird diese Änderung auf den Herausgeber repliziert.

Leider kenne ich keine einfache Möglichkeit, diese Spalte zu aktualisieren, es sei denn, Sie replizieren diese Spalte nicht an erster Stelle - also schließen Sie sie mit vertikaler (Spalten-) Partitionierung aus.

0

nicht sicher, was Sie wirklich wollen, aber falls Sie auseinander diese Datensätze sagen wollen, die sich von denen auf dieser Instanz stammt, die von anderen Instanzen über Replikation hier angekommen, ein Weg, dies zu tun, ist eine Origin haben Spalte in Ihrer Tabelle und haben Sie einen Standardwert auf jedem Ihrer Server.

Verwandte Themen