Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird erläutert, wie Sie verschiedene Eigenschaften für die Zusammenführungsreplikation angeben.
Nur herunterladen
In diesem Abschnitt wird beschrieben, wie Sie angeben, dass ein Zusammenführungstabellenartikel in SQL Server 2014 mithilfe von SQL Server Management Studio oder Transact-SQL nur zum Herunterladen bereitsteht. Download-only-Artikel sind für Anwendungen gedacht, deren Daten bei Abonnenten nicht aktualisiert werden. Weitere Informationen finden Sie unter Optimieren der Leistung der Mergereplikation durch nur herunterladbare Artikel.
Einschränkungen und Beschränkungen
- Wenn Sie angeben, dass ein Artikel nur heruntergeladen wird, nachdem Abonnements initialisiert wurden, müssen alle Clientabonnements, die den Artikel erhalten haben, erneut initialisiert werden. Serverabonnements müssen nicht erneut initialisiert werden. Weitere Informationen zu den Auswirkungen von Eigenschaftsänderungen finden Sie unter Ändern von Publikations- und Artikeleigenschaften.
Verwendung von SQL Server Management Studio
Geben Sie an, dass ein Artikel nur zum Herunterladen auf der Seite Artikel des Assistenten für neue Publikationen oder auf der Registerkarte Eigenschaften des Dialogfelds Artikel-Eigenschaften - <Artikel> verfügbar ist. Dieses Dialogfeld ist im Assistenten für neue Publikation und im Dialogfeld "Publikationseigenschaften - <Publikation> " verfügbar. Weitere Informationen zur Verwendung des Assistenten und zum Zugreifen auf das Dialogfeld finden Sie unter Erstellen einer Publikation und Ansicht und Ändern der Publikationseigenschaften.
So geben Sie an, dass ein Artikel nur auf der Artikelseite heruntergeladen wird
- Wählen Sie auf der Seite "Artikel " des Assistenten für neue Publikation eine Tabelle aus, und aktivieren Sie dann das Kontrollkästchen "Hervorgehobene Tabelle" nur zum Herunterladen.
Um anzugeben, dass ein Artikel nur zum Herunterladen verfügbar ist, verwenden Sie die Registerkarte "Eigenschaften" im Dialogfeld "Artikeleigenschaften<>".
Wählen Sie auf der Seite "Artikel " des Assistenten "Neue Publikation" oder im Dialogfeld " Publikationseigenschaften – <Publikation> " eine Tabelle aus, und klicken Sie dann auf "Artikeleigenschaften".
Klicken Sie auf "Eigenschaften des hervorgehobenen Tabellenartikels festlegen " oder auf "Eigenschaften aller Tabellenartikel festlegen".
Geben Sie im Abschnitt "Zielobjekt " auf der Registerkarte "Eigenschaften " des Dialogfelds " Artikeleigenschaften – <Artikel> " einen der folgenden Werte für die Synchronisierungsrichtung an:
- Download für Abonnenten, Änderungen durch Abonnenten verbieten
- Herunterladen für Abonnenten, Abonnentenänderungen zulassen
Wenn Sie sich im Dialogfeld " Publikationseigenschaften <- Publikation> " befinden, klicken Sie auf "OK ", um das Dialogfeld zu speichern und zu schließen.
Verwenden von Transact-SQL
So geben Sie an, dass ein neuer Zusammenführungstabellenartikel nur heruntergeladen wird
Führen Sie sp_addmergearticle aus, und geben Sie einen Wert von 1 oder 2 für den Parameter @subscriber_upload_options an. Die Zahlen entsprechen dem folgenden Verhalten:
0 – Keine Einschränkungen (Standard). Änderungen, die am Abonnenten vorgenommen wurden, werden in den Publisher hochgeladen.
1 – Änderungen sind beim Abonnenten zulässig, werden jedoch nicht in den Publisher hochgeladen.
2 – Änderungen sind beim Abonnenten nicht zulässig.
Hinweis
Wenn die Quelltabelle für einen Artikel bereits in einer anderen Publikation veröffentlicht wird, muss der Wert von @subscriber_upload_options für beide Artikel gleich sein.
So ändern Sie einen vorhandenen Zusammenführungstabellenartikel so, dass er nur heruntergeladen werden kann
Um festzustellen, ob ein Artikel nur heruntergeladen wird, führen Sie sp_helpmergearticle aus. Beachten Sie den Wert von upload_options für den Artikel im Resultset.
Wenn der in Schritt 1 zurückgegebene Wert 0 ist, führen Sie sp_changemergearticle aus, und geben Sie einen Wert von subscriber_upload_options für @property, einen Wert von 1 für @force_invalidate_snapshot und @force_reinit_subscription und einen Wert von 1 oder 2 für @value an, der dem folgenden Verhalten entspricht:
1 – Änderungen sind beim Abonnenten zulässig, werden jedoch nicht in den Publisher hochgeladen.
2 – Änderungen sind beim Abonnenten nicht zulässig.
Hinweis
Wenn die Quelltabelle für einen Artikel bereits in einer anderen Publikation veröffentlicht wird, muss das Nur-Download-Verhalten für beide Artikel identisch sein.
Interaktive Konfliktlösung
Die Microsoft SQL Server-Replikation bietet einen interaktiven Resolver, mit dem Sie Konflikte während der On-Demand-Synchronisierung im Microsoft Windows-Synchronisierungs-Manager manuell beheben können. Nachdem die interaktive Auflösung aktiviert wurde, lösen Sie Konflikte interaktiv während der Synchronisierung mithilfe des interaktiven Resolvers. Der interaktive Resolver ist über den Microsoft Windows-Synchronisierungs-Manager verfügbar. Weitere Informationen finden Sie unter Synchronisieren eines Abonnements mit dem Windows-Synchronisierungs-Manager (Windows-Synchronisierungs-Manager).
Empfehlungen
- Wenn eine Synchronisierung außerhalb des Windows-Synchronisierungs-Managers (als geplante Synchronisierung oder on Demand-Synchronisierung in SQL Server Management Studio oder Replikationsmonitor) ausgeführt wird, werden Konflikte automatisch ohne Benutzereingriff gelöst, wobei die für den Artikel angegebene Standardkonfliktauflösung verwendet wird. Weitere Informationen finden Sie unter Interaktive Konfliktlösung.
Verwendung von SQL Server Management Studio
Aktivieren der interaktiven Konfliktlösung für einen Artikel
- Wählen Sie auf der Seite " Artikel " des Assistenten für neue Publikation oder im Dialogfeld " Publikationseigenschaften – <Publikation> " eine Tabelle aus. Weitere Informationen zur Verwendung des Assistenten und zum Zugreifen auf das Dialogfeld finden Sie unter Erstellen einer Publikation und Ansicht und Ändern der Publikationseigenschaften.
- Klicken Sie auf Artikeleigenschaften, und klicken Sie dann auf "Eigenschaften des hervorgehobenen Tabellenartikels festlegen " oder auf "Eigenschaften aller Tabellenartikel festlegen".
- Klicken Sie auf der Seite "Artikeleigenschaften " <Artikel>- oder Artikeleigenschaften " <ArticleType>" auf die Registerkarte "Resolver".
- Wählen Sie „Abonnenten ermöglichen, Konflikte interaktiv bei der On-Demand-Synchronisation zu lösen“.
- Klicke auf OK.
- Wenn Sie sich im Dialogfeld " Publikationseigenschaften <- Publikation> " befinden, klicken Sie auf "OK ", um das Dialogfeld zu speichern und zu schließen.
So geben Sie an, dass ein Abonnement interaktive Konfliktlösung verwenden soll
- Geben Sie im Dialogfeld "Abonnementeigenschaften <– Subscriber>: <SubscriptionDatabase> " den Wert "True " für die Option " Konflikte lösen" interaktiv an. Weitere Informationen zum Zugreifen auf dieses Dialogfeld finden Sie unter View and Modify Push Subscription Properties und View and Modify Pull Subscription Properties.
- Klicke auf OK.
Verwenden von Transact-SQL
Sie können programmgesteuert angeben, dass ein Abonnent diese grafische Schnittstelle verwendet, um Artikelkonflikte zu lösen, wenn ein Pull-Abonnement für eine Zusammenführungsveröffentlichung erstellt wird. Nur Konflikte in Artikeln, die diese Option unterstützen, werden im Interactive Resolver angezeigt.
Erstellen Sie ein Zusammenführungs-Pull-Abonnement, das den interaktiven Resolver verwendet
Führen Sie bei Publisher in der Publikationsdatenbank sp_helpmergearticle aus, und geben Sie @publication an. Beachten Sie den Wert von allow_interactive_resolver für jeden Artikel im Resultset, für den der interaktive Resolver verwendet wird.
- Wenn dieser Wert 1 ist, wird der interaktive Resolver verwendet.
- Wenn dieser Wert 0 ist, müssen Sie zuerst den Interactive Resolver für jeden Artikel aktivieren. Führen Sie dazu sp_changemergearticle aus, indem Sie @publication, @article, einen Wert von allow_interactive_resolver für @property und einen Wert von "true " für @value angeben.
Führen Sie beim Abonnenten in der Abonnementdatenbank sp_addmergepullsubscription aus. Weitere Informationen finden Sie unter Erstellen eines Pullabonnements.
Führen Sie bei der Abonnentendatenbank sp_addmergepullsubscription_agent aus, und geben Sie die folgenden Parameter an:
- @publisher, @publisher_db (die veröffentlichte Datenbank) und @publication.
- Ein Wert von "true " für @enabled_for_syncmgr.
- Ein Wert von true für @use_interactive_resolver.
- Die vom Zusammenführungsagent erforderlichen Sicherheitskontoinformationen. Weitere Informationen finden Sie unter Erstellen eines Pullabonnements.
Führen Sie im Publisher in der Publikationsdatenbank sp_addmergesubscription aus.
Definieren eines Artikels, der den interaktiven Resolver unterstützt
Führen Sie im Publisher in der Publikationsdatenbank sp_addmergearticle aus. Geben Sie den Namen der Publikation an, zu der der Artikel für @publication gehört, einen Namen für den Artikel für @article, das Datenbankobjekt, das für @source_object veröffentlicht wird, und einen Wert von "true " für @allow_interactive_resolver. Weitere Informationen finden Sie unter Definieren eines Artikels.
Geben Sie das Konfliktverfolgungs- und Auflösungsniveau an.
Wenn ein Abonnement einer Zusammenführungsveröffentlichung synchronisiert wird, sucht die Replikation nach Konflikten, die durch Änderungen an denselben Daten verursacht werden, die sowohl beim Publisher als auch beim Abonnenten vorgenommen wurden. Sie können angeben, ob Konflikte auf Zeilenebene erkannt werden, bei denen änderungen an der Zeile als Konflikt betrachtet werden, oder Spaltenebene, bei denen nur Änderungen an derselben Zeile und Spalte als Konflikt betrachtet werden. Konfliktlösung für Artikel wird auf Zeilenebene ausgeführt. Weitere Informationen zur Konflikterkennung und -auflösung, wenn logische Datensätze verwendet werden, finden Sie unter Erkennen und Auflösen von Konflikten in logischen Datensätzen.
Einschränkungen und Beschränkungen
- Wenn Sie die Nachverfolgungsebene ändern, nachdem Abonnements initialisiert wurden, müssen diese Abonnements erneut initialisiert werden. Weitere Informationen zu den Auswirkungen von Eigenschaftsänderungen finden Sie unter Ändern von Publikations- und Artikeleigenschaften.
- Bei der Zeilen- und Spaltennachverfolgung wird die Konfliktauflösung immer auf Zeilenebene ausgeführt: Die gewinnbringende Zeile überschreibt die verlorene Zeile. Mit der Zusammenführungsreplikation können Sie auch angeben, dass Konflikte auf logischer Datensatzebene nachverfolgt und aufgelöst werden, diese Optionen sind jedoch nicht in SQL Server Management Studio verfügbar. Informationen darüber, wie Sie diese Optionen mithilfe gespeicherter Replikationsprozeduren festlegen, finden Sie unter Define a Logical Record Relationship Between Merge Table Articles.
Verwendung von SQL Server Management Studio
Auf der Registerkarte „Eigenschaften“ im Dialogfeld „Artikeleigenschaften“, das im Assistenten für neue Publikationen und im Dialogfeld „Publikationseigenschaften - <Publikation>“ verfügbar ist, spezifizieren Sie die Nachverfolgung auf Zeilen- oder Spaltenebene für Zusammenführungsobjekte. Weitere Informationen zur Verwendung des Assistenten und zum Zugreifen auf das Dialogfeld finden Sie unter Erstellen einer Publikation und Ansicht und Ändern der Publikationseigenschaften.
Zeilen- oder Spaltenverfolgung festlegen
- Wählen Sie auf der Seite " Artikel " des Assistenten für neue Publikation oder im Dialogfeld " Publikationseigenschaften – <Publikation> " eine Tabelle aus.
- Klicken Sie auf Artikeleigenschaften, und klicken Sie dann auf "Eigenschaften des hervorgehobenen Tabellenartikels festlegen " oder auf "Eigenschaften aller Tabellenartikel festlegen".
- Wählen Sie auf der Registerkarte Eigenschaften des Dialogfelds Artikeleigenschaften<> einen der folgenden Werte für die Eigenschaft Nachverfolgungsebene aus: Nachverfolgung auf Zeilenebene oder Nachverfolgung auf Spaltenebene.
- Wenn Sie sich im Dialogfeld " Publikationseigenschaften <- Publikation> " befinden, klicken Sie auf "OK ", um das Dialogfeld zu speichern und zu schließen.
Verwenden von Transact-SQL
Angeben von Optionen für die Konfliktverfolgung für einen neuen Zusammenführungsartikel
Führen Sie im Publisher in der Datenbank der Veröffentlichung sp_addmergearticle aus, und geben Sie einen der folgenden Werte für @column_tracking an:
- true – Verwenden Sie die Nachverfolgung auf Spaltenebene für den Artikel.
- false – Verwenden Sie die Nachverfolgung auf Zeilenebene. Dies ist die Standardeinstellung.
Ändern der Konfliktnachverfolgungsoptionen für einen Zusammenführungsartikel
Führen Sie sp_helpmergearticle aus, um die Optionen für die Konfliktverfolgung für einen Seriendruckartikel zu ermitteln. Notieren Sie sich den Wert der Option column_tracking im Resultset für den Artikel. Ein Wert von 1 bedeutet, dass die Nachverfolgung auf Spaltenebene verwendet wird, und ein Wert von 0 bedeutet, dass die Nachverfolgung auf Zeilenebene verwendet wird.
Führen Sie bei dem Publisher auf der Publikationsdatenbank sp_changemergearticle aus. Geben Sie einen Wert von column_tracking für @property und einen der folgenden Werte für @value an:
- true – Verwenden Sie die Nachverfolgung auf Spaltenebene für den Artikel.
- false – Verwenden Sie die Nachverfolgung auf Zeilenebene. Dies ist die Standardeinstellung.
Geben Sie einen Wert von 1 für @force_invalidate_snapshot und @force_reinit_subscription an.
Nachverfolgen von Löschvorgangen
Hinweis
Dieses Feature wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Vermeiden Sie die Verwendung dieses Features in neuer Entwicklungsarbeit, und planen Sie, Anwendungen zu ändern, die derzeit dieses Feature verwenden.
Standardmäßig synchronisiert die Mergereplikation DELETE-Befehle zwischen Publisher und Subscriber. Mit der Mergereplikation können Sie Zeilen in der Abonnementdatenbank beibehalten, selbst wenn sie in der Publikation gelöscht wurden, und umgekehrt. Sie können programmgesteuert angeben, dass DELETE-Befehle beim Erstellen eines neuen Artikels ignoriert werden, oder Sie können diese Funktionalität zu einem späteren Zeitpunkt mithilfe gespeicherter Replikationsprozeduren aktivieren.
Von Bedeutung
Das Aktivieren dieser Funktionalität führt zu einer Nichtkonvergenz, was bedeutet, dass die Daten, die beim Abonnenten vorhanden sind, die Daten beim Publisher nicht genau widerspiegeln. Sie müssen einen eigenen Mechanismus zum manuellen Entfernen gelöschter Zeilen implementieren.
Geben Sie an, dass Löschvorgänge für einen neuen Zusammenführungsartikel ignoriert werden.
Führen Sie im Publisher in der Publikationsdatenbank sp_addmergearticle (Transact-SQL) aus. Geben Sie einen Wert für
false@delete_tracking an. Weitere Informationen finden Sie unter Definieren eines Artikels.Hinweis
Wenn die Quelltabelle für einen Artikel bereits in einer anderen Publikation veröffentlicht wird, muss der Wert von delete_tracking für beide Artikel gleich sein.
Geben Sie an, dass Löschvorgänge für einen vorhandenen Zusammenführungsartikel ignoriert werden.
Um festzustellen, ob die Fehlerkorrektur für einen Artikel aktiviert ist, führen Sie sp_helpmergearticle (Transact-SQL) aus, und notieren Sie den Wert von delete_tracking im Resultset. Wenn dieser Wert 0 ist, werden Löschvorgänge bereits ignoriert.
Wenn der Wert aus Schritt 1 1 lautet, führen Sie sp_changemergearticle (Transact-SQL) im Publisher in der Publikationsdatenbank aus. Geben Sie einen Wert von delete_tracking für @property und einen Wert für
false@value an.Hinweis
Wenn die Quelltabelle für einen Artikel bereits in einer anderen Publikation veröffentlicht wird, muss der Wert von delete_tracking für beide Artikel gleich sein.
Verarbeitungsauftrag
Mit der Zusammenführungsreplikation können Sie die Reihenfolge angeben, in der Artikel während des Synchronisierungsprozesses vom Zusammenführungs-Agent verarbeitet werden. Sie können jedem Artikel programmgesteuert eine Bestellung zuweisen, wenn Sie einen Artikel mithilfe von gespeicherten Replikationsprozeduren erstellen. Artikel werden von niedrigstem bis höchsten Wert verarbeitet. Wenn zwei Artikel denselben Wert haben, werden sie gleichzeitig verarbeitet. Weitere Informationen finden Sie unter Specify Merge Replication properties (Angeben von Mergereplikationseigenschaften).
Ab Microsoft SQL Server 2005 ist es möglich, die Standardreihenfolge der Artikelverarbeitung für Zusammenführungsveröffentlichungen außer Kraft zu setzen. Dies ist beispielsweise hilfreich, wenn Sie die referenzielle Integrität durch Trigger definieren und diese Trigger in einer bestimmten Reihenfolge auslösen müssen.
Wie die Verarbeitungsreihenfolge bestimmt wird
Bei der Zusammenführungssynchronisierung werden Artikel standardmäßig in der Reihenfolge verarbeitet, die von den Abhängigkeiten zwischen Objekten erforderlich ist, einschließlich der deklarativen referentiellen Integritätseinschränkungen (DRI), die in den Basistabellen definiert sind. Die Verarbeitung umfasst das Aufzählen der Änderungen an einer Tabelle und anschließendes Anwenden dieser Änderungen. Wenn kein DRI vorhanden ist, aber Verknüpfungsfilter oder logische Datensätze zwischen Tabellenartikeln vorhanden sind, werden die Artikel in der Reihenfolge verarbeitet, die von den Filtern und logischen Datensätzen benötigt wird. Artikel, die nicht mit einem anderen Artikel durch DRI, Join-Filter, logische Datensätze oder andere Abhängigkeiten verbunden sind, werden gemäß dem Spitznamen des Artikels in der Systemtabelle sysmergearticles (Transact-SQL) verarbeitet.
Betrachten Sie eine Publikation, die die Tabellen SalesOrderHeader und SalesOrderDetail mit einer Primärschlüsselspalte "SalesOrderID " in der Tabelle "SalesOrderHeader " und einer entsprechenden Fremdschlüsselspalte "SalesOrderID " in der Tabelle "SalesOrderDetail " enthält. Während der Synchronisierung verhindert die Zusammenführungs-Replikation Fremdschlüsselverletzungen, indem sie neue Zeilen in SalesOrderHeader einfügt, bevor verknüpfte Zeilen in SalesOrderDetail eingefügt werden. Ebenso werden Zeilen aus SalesOrderDetail gelöscht, bevor die zugeordnete Zeile aus SalesOrderHeader gelöscht wird.
In einigen Anwendungen wird die referenzielle Integrität jedoch durch Datenbanktrigger oder auf Anwendungsebene und nicht über DRI erzwungen. Aufgrund der oben beschriebenen Publikation könnte die Tabelle "SalesOrderDetail " anstelle von DRI über einen Einfügetrigger verfügen, der sicherstellt, dass die zugeordnete Zeile in der Tabelle "SalesOrderHeader " vorhanden ist, bevor ein Einfügen zugelassen wird. SalesOrderHeader könnte über einen Löschtrigger verfügen, der sicherstellt, dass keine zugeordneten Zeilen in SalesOrderDetail vorhanden sind, bevor ein Löschen zugelassen wird. Die Merge-Replikation berücksichtigt bei der Bestimmung der Verarbeitungsreihenfolge von Artikeln keine Auslöser, da das Ergebnis des Triggers erst bestimmt werden kann, wenn er ausgelöst wurde. Ebenso kann die Replikation keine Einschränkungen berücksichtigen, die auf Anwendungsebene definiert sind.
Wenn die referenzielle Integrität über Trigger oder auf Anwendungsebene verwaltet wird, sollten Sie die Reihenfolge angeben, in der die Artikel verarbeitet werden sollen. Im Beispiel mit Triggern würden Sie angeben, dass die Tabelle "SalesOrderHeader " vor "SalesOrderDetail" verarbeitet werden soll, da die Artikelreihenfolge auf der Reihenfolge des Einfügens basiert. Bei der Zusammenführungsreplikation wird die Reihenfolge für Löschungen automatisch rückgängig gemacht. Die Zusammenführungsreplikation schlägt nicht aufgrund der Reihenfolge der Artikel fehl, da der Merge-Agent weiterhin Artikel verarbeitet, wenn ein Verstoß gegen Einschränkungen auftritt; er wiederholt dann alle Vorgänge, die nach der Verarbeitung anderer Artikel fehlgeschlagen sind. Die Angabe der Artikelreihenfolge vermeidet einfach Wiederholungen und die ihnen zugeordnete zusätzliche Verarbeitung. Wenn Sie eine falsche Reihenfolge angeben (z. B. indem Detaildatensätze vor Kopfdaten verarbeitet werden), wird die Zusammenführungsreplikation die Verarbeitung erneut starten, bis sie erfolgreich ist.
Neuer Artikel
Führen Sie im Publisher in der Publikationsdatenbank sp_addmergearticle (Transact-SQL) aus. Geben Sie einen ganzzahligen Wert an, der die Verarbeitungsreihenfolge für den Artikel für @processing_order darstellt. Weitere Informationen finden Sie unter Definieren eines Artikels.
Hinweis
Beim Erstellen sortierter Artikel sollten Sie Lücken zwischen den Reihenfolgewerten der Artikel lassen. Dies erleichtert das Festlegen neuer Werte in Zukunft. Wenn Sie beispielsweise drei Artikel haben, für die Sie eine feste Verarbeitungsreihenfolge angeben müssen, legen Sie den Wert von @processing_order auf 10, 20 und 30 anstelle von 1, 2 und 3 fest.
Vorhandener Artikel
Um die Verarbeitungsreihenfolge eines Artikels zu ermitteln, führen Sie sp_helpmergearticle (Transact-SQL) aus, und notieren Sie den Wert von processing_order im Resultset.
Führen Sie beim Publisher auf der Publikationsdatenbank sp_changemergearticle (Transact-SQL) aus. Geben Sie einen Wert von processing_order für @property und einen ganzzahligen Wert an, der die Verarbeitungsreihenfolge für @value darstellt.
Siehe auch
Optimieren der Zusammenführungsreplikationsleistung mit nachverfolgung bedingter Löschung
Erkennen und Auflösen von Konflikten in logischen Datensätzen
Definieren einer logische Datensatzbeziehung zwischen Mergetabellenartikeln
Erkennen und Beheben von Zusammenführungsreplikationskonflikten
Optimieren Sie die Leistungsfähigkeit der Zusammenführungsreplikation mithilfe von Download-Only-Artikeln
Definieren eines Artikels
Anzeigen und Ändern von Artikeleigenschaften