Überlegungen hinsichtlich der Mergereplikation

Bei der Mergereplikation sind mehrere Punkte zu berücksichtigen:

  • Hinzufügen einer uniqueidentifier-Spalte zu veröffentlichten Tabellen

  • timestamp-Spalten

  • LOB-Datentypen (Large Object)

  • Masseneinfügung von Daten in veröffentlichte Tabellen

  • Veröffentlichungskompatibilitätsgrad Weitere Informationen finden Sie im Abschnitt zum Kompatibilitätsgrad für Mergeveröffentlichungen unter Verwenden mehrerer Versionen von SQL Server in einer Replikationstopologie.

Hinzufügen der uniqueidentifier-Spalte

Bei der Mergereplikation wird eine Globally Unique Identifier-(GUID-)Spalte zur Identifizierung der einzelnen Zeilen verwendet. Wenn eine veröffentlichte Tabelle keine uniqueidentifier-Spalte mit der ROWGUIDCOL-Eigenschaft und einem eindeutigen Index aufweist, wird die Spalte hinzugefügt. Stellen Sie sicher, dass sämtliche SELECT- und INSERT-Anweisungen, die auf veröffentlichte Tabellen verweisen, Spaltenlisten verwenden. Wenn eine Tabelle nicht mehr veröffentlicht wird und die Spalte von der Replikation hinzugefügt wurde, wird die Spalte entfernt; wenn die Spalte bereits vorhanden war, wird sie nicht entfernt.

timestamp-Spalten

Die Mergereplikation unterstützt timestamp-Spalten. Die timestamp-Spalte wird repliziert, die timestamp-Literalwerte jedoch nicht. Die timestamp-Werte werden erneut generiert, wenn der Snapshot auf dem Abonnenten angewendet wird. Da die timestamp-Werte auf dem Abonnenten erneut generiert werden, werden timestamp-Spalten herausgefiltert, wenn die Artikelüberprüfung ausgeführt wird.

LOB-Datentypen (Large Object)

Wenn eine veröffentlichte Tabelle LOBs enthält, empfiehlt es sich, für den @stream_blob_columns-Parameter von sp_addmergearticle (Transact-SQL) den Wert TRUE anzugeben. Wenn TRUE nicht angegeben wird, muss das gesamte LOB auf dem Verleger im Arbeitsspeicher gespeichert werden; wenn das LOB sehr groß ist, kann es sein, dass dem Verleger kein RAM mehr zur Verfügung steht.

Wichtiger HinweisWichtig

Durch Aktivieren der Speicheroptimierung kann die Leistung des Merge-Agents während der Synchronisierung beeinträchtigt werden. Diese Option sollte nur verwendet werden, wenn Spalten repliziert werden, die Megabytes an Daten enthalten.

An den Spalten text, ntext und image vorgenommene Aktualisierungen werden nur repliziert, wenn die Spalte über eine UPDATE-Anweisung explizit aktualisiert wurde. Durch die Aktualisierung wird ein Trigger ausgelöst, der Metadaten aktualisiert; auf diese Weise wird sichergestellt, dass die Transaktion an andere Abonnenten weitergegeben wird. Durch das Verwenden der WRITETEXT- und UPDATETEXT-Operationen allein werden die Änderungen nicht an andere Sites weitergegeben. Falls Ihre Anwendung WRITETEXT und UPDATETEXT zum Aktualisieren der text- oder ntext-Spalten verwendet, fügen Sie explizit eine UPDATE-Pseudoanweisung nach den WRITETEXT- oder UPDATETEXT-Operationen innerhalb derselben Transaktion ein, um den Trigger auszulösen und so sicherzustellen, dass die Änderung an andere Sites weitergegeben wird. Weitere Informationen zu diesen Datentypen finden Sie unter ntext, text und image (Transact-SQL).

HinweisHinweis

Es wird empfohlen, jeweils die Datentypen varchar(max), nvarchar(max), varbinary(max) anstelle der Datentypen text, ntext und image zu verwenden.

Masseneinfügung von Daten in veröffentlichte Tabellen

Von der Mergereplikation werden an veröffentlichten Tabellen vorgenommene Änderungen mithilfe von Triggern und Systemtabellen nachverfolgt. Wenn Sie die Masseneinfügung von Daten mithilfe des Dienstprogramms bcp bzw. des BULK INSERT-Befehls ausführen, werden Trigger nicht standardmäßig ausgelöst. Wenn keine Trigger ausgelöst werden, werden die Einfügungen nicht nachverfolgt und nicht an andere Knoten weitergegeben. Um die Nachverfolgung von Änderungen sicherzustellen, empfiehlt es sich, die Masseneinfügungen gemäß einer der folgenden Methoden auszuführen:

  • Verwenden Sie die Option FIRE_TRIGGERS für das Dienstprogramm bcp bzw. den BULK INSERT-Befehl. Durch diese Option wird sichergestellt, dass Trigger wie bei einem normalen Einfügevorgang ausgelöst werden. Weitere Informationen finden Sie unter bcp (Hilfsprogramm) und BULK INSERT (Transact-SQL).

  • Führen Sie nach Ausführung der Masseneinfügung die gespeicherte sp_addtabletocontents-Prozedur aus. Durch diese Prozedur werden Verweise für jegliche Zeilen in einer Quelltabelle eingefügt, die derzeit nicht enthalten sind. Weitere Informationen finden Sie unter sp_addtabletocontents (Transact-SQL).