Angeben von MergereplikationseigenschaftenSpecify Merge Replication properties

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions)

In diesem Artikel wird beschrieben, wie Sie verschiedene Eigenschaften für Ihre Mergereplikationen angeben.This topic explains how to specify various properties for your merge replication.

Der Artikel zu Mergereplikationen ist nur herunterladbarMerge Article is Download-Only

Nur herunterladbare Artikel sind für Anwendungen vorgesehen, deren Daten nicht auf den Abonnenten aktualisiert werden.Download-only articles are designed for applications with data that is not updated at Subscribers. Weitere Informationen finden Sie unter Optimieren der Leistung der Mergereplikation durch nur herunterladbare Artikel.For more information, see Optimize Merge Replication Performance with Download-Only Articles.

ÜberlegungenConsiderations

  • Wenn Sie nach der Initialisierung von Abonnements angeben, dass ein Artikel nur herunterladbar sein soll, müssen sämtliche Clientabonnements, die den Artikel erhalten, erneut initialisiert werden.If you specify that an article is download-only after subscriptions have been initialized, all client subscriptions that received the article must be reinitialized. Serverabonnements müssen nicht erneut initialisiert werden.Server subscriptions do not have to be reinitialized. Weitere Informationen über die Auswirkungen von Eigenschaftsänderungen finden Sie unter Ändern von Veröffentlichungs- und Artikeleigenschaften.For more information on the effects of property changes, see Change Publication and Article Properties.

Verwenden von SQL Server Management StudioUse SQL Server Management Studio

Auf der Seite „Artikel“On the Articles page

Wählen Sie im Assistenten für neue Veröffentlichung auf der Seite Artikel eine Tabelle aus, und aktivieren Sie dann das Kontrollkästchen Die durch die Hervorhebung markierte Tabelle ist nur herunterladbar.On the Articles page of the New Publication Wizard select a table, and then select the checkbox Highlighted table is download-only.

Auf der Registerkarte „Eigenschaften“ der ArtikeleigenschaftenOn the Properties tab of the Article Properties

  1. Wählen Sie im Assistenten für neue Veröffentlichung auf der Seite Artikel bzw. im Dialogfeld Veröffentlichungseigenschaften - <Publication> eine Tabelle aus, und klicken anschließend auf Artikeleigenschaften.On the Articles page of the New Publication Wizard or the Publication Properties - <Publication> dialog box, select a table, and then click Article Properties.

  2. Klicken Sie auf Eigenschaften des hervorgehobenen Tabelle-Artikels festlegen oder Eigenschaften aller Tabellenartikel festlegen.Click Set Properties of Highlighted Table Article or Set Properties of All Table Articles.

  3. Geben Sie im Abschnitt Zielobjekt der Registerkarte Eigenschaften des Dialogfelds Artikeleigenschaften - <Article> einen der folgenden Werte für Synchronisierungsrichtung an:In the Destination Object section of the Properties tab of the Article Properties - <Article> dialog box, specify one of the following values for Synchronization direction:

    • Nur herunterladbar auf Abonnenten, Abonnentenänderungen nicht zulassenDownload to Subscriber, prohibit Subscriber changes
    • Nur herunterladbar auf Abonnenten, Abonnentenänderungen zulassenDownload to Subscriber, allow Subscriber changes
  4. Wenn Sie sich im Dialogfeld Veröffentlichungseigenschaften - <Publication> befinden, klicken Sie auf OK, um die Einstellungen zu speichern und das Dialogfeld zu schließen.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

Verwenden von Transact-SQLUse Transact-SQL

Neuer ArtikelNew article

  1. Führen Sie sp_addmergearticle aus, und geben Sie dabei den Wert 1 oder 2 für den Parameter @subscriber_upload_options an.Execute sp_addmergearticle, specifying a value of 1 or 2 for the parameter @subscriber_upload_options. Die Werte entsprechen dem folgenden Verhalten:The numbers correspond to the following behavior:

    • 0 – Keine Einschränkungen (Standard).0 - No restrictions (default). Auf dem Abonnenten vorgenommene Änderungen werden auf den Verleger hochgeladen.Changes made at the Subscriber are uploaded to the Publisher.
    • 1 – Änderungen sind auf dem Abonnenten zulässig, werden aber nicht auf den Verleger hochgeladen.1 - Changes are allowed at the Subscriber, but they are not uploaded to the Publisher.
    • 2 – Änderungen sind auf dem Abonnenten nicht zulässig.2 - Changes are not allowed at the Subscriber.

    Hinweis

    Wenn die Quelltabelle für einen Artikel bereits in einer anderen Veröffentlichung veröffentlicht wurde, muss der Wert für @subscriber_upload_options für beide Artikel identisch sein.If the source table for an article is already published in another publication, the value of @subscriber_upload_options must be the same for both articles.

Bereits vorhandener ArtikelExisting article

  1. Führen Sie den Befehl sp_helpmergearticle aus, und überprüfen Sie den Wert upload_options für den Artikel im Resultset, um zu bestimmen, ob ein Artikel nur herunterladbar ist.To determine if an article is download-only, execute sp_helpmergearticle and verify value of upload_options for the article in the result set.

  2. Wenn in Schritt 1 der Wert 0zurückgegeben wird, führen Sie sp_changemergearticle aus, und geben Sie dabei den Wert subscriber_upload_options für @property, den Wert 1 für @force_invalidate_snapshot und @force_reinit_subscription sowie den Wert 1 oder 2 für @value an, was folgendem Verhalten entspricht:If the value returned in step 1 is 0, execute sp_changemergearticle, specifying a value of subscriber_upload_options for @property, a value of 1 for @force_invalidate_snapshot and @force_reinit_subscription, and a value of 1 or 2 for @value, which corresponds to the following behavior:

    • 1 – Änderungen sind auf dem Abonnenten zulässig, werden aber nicht auf den Verleger hochgeladen.1 - Changes are allowed at the Subscriber, but they are not uploaded to the Publisher.

    • 2 – Änderungen sind auf dem Abonnenten nicht zulässig.2 - Changes are not allowed at the Subscriber.

      Hinweis

      Wenn die Quelltabelle eines Artikels bereits in einer anderen Veröffentlichung veröffentlicht wurde, muss das Verhalten nur herunterladbarer Artikel gleich sein.If the source table for an article is already published in another publication, the download-only behavior must be the same for both articles.

Interactive Conflict ResolutionInteractive Conflict Resolution

Bei der Microsoft SQL Server-Replikation steht ein interaktiver Konfliktlöser zur Verfügung, mit dem Sie Konflikte bei einer bedarfsgesteuerten Synchronisierung in der Synchronisierungsverwaltung für Microsoft Windows manuell lösen können.Microsoft SQL Server replication provides an Interactive Resolver, which allows you to resolve conflicts manually during on-demand synchronization in Microsoft Windows Synchronization Manager. Wenn Sie die interaktive Konfliktlösung aktiviert haben, können Sie Konflikte mithilfe des interaktiven Konfliktlösers interaktiv lösen.After interactive resolution is enabled, resolve conflicts interactively during synchronization, using the Interactive Resolver. Der interaktive Konfliktlöser ist über die Synchronisierungsverwaltung für Microsoft Windows verfügbar.The Interactive Resolver is available through the Microsoft Windows Synchronization Manager. Weitere Informationen finden Sie unter Synchronisieren eines Abonnements mithilfe der Synchronisierungsverwaltung von Windows (Synchronisierungsverwaltung von Windows).For more information, see Synchronize a Subscription Using Windows Synchronization Manager (Windows Synchronization Manager).

EmpfehlungenRecommendations

  • Wenn die Synchronisierung nicht im Rahmen der Synchronisierungsverwaltung von Windows erfolgt (sondern als geplante Synchronisierung oder als bedarfsgesteuerte Synchronisierung in SQL Server Management Studio oder im Replikationsmonitor), werden Konflikte ohne Benutzereingriff automatisch entsprechend der Standardkonfliktlösung gelöst, die für den Artikel angegeben ist.If a synchronization is performed outside of Windows Synchronization Manager (as a scheduled synchronization or an on demand synchronization in SQL Server Management Studio or Replication Monitor), conflicts are resolved automatically without user intervention, using the default conflict resolution specified for the article. Weitere Informationen finden Sie unter Interactive Conflict Resolution.For more information, see Interactive Conflict Resolution.

Verwenden von SQL Server Management StudioUse SQL Server Management Studio

Aktivieren der interaktiven Konfliktlösung für einen ArtikelEnable interactive conflict resolution for an article

  1. Wählen Sie auf der Seite Artikel des Assistenten für neue Veröffentlichung bzw. des Dialogfelds Veröffentlichungseigenschaften - <Publication> eine Tabelle aus.On the Articles page of the New Publication Wizard or the Publication Properties - <Publication> dialog box, select a table. Weitere Informationen zum Verwenden des Assistenten sowie Zugriff auf das Dialogfeld finden Sie unter Erstellen einer Veröffentlichung und Anzeigen und Ändern von Veröffentlichungseigenschaften.For more information about using the wizard and accessing the dialog box, see Create a Publication and View and Modify Publication Properties.
  2. Klicken Sie auf Artikeleigenschaftenund anschließend auf Eigenschaften des hervorgehobenen Tabellenartikels festlegen bzw. Eigenschaften aller Tabellenartikel festlegen.Click Article Properties, and then click Set Properties of Highlighted Table Article or Set Properties of All Table Articles.
  3. Klicken Sie auf der Seite Artikeleigenschaften - <Article> oder Artikeleigenschaften - <ArticleType> auf die Registerkarte Konfliktlöser.On the Article Properties - <Article> or Article Properties - <ArticleType> page, click the Resolver tab.
  4. Aktivieren Sie die Option Zulassen, dass der Abonnent Konflikte während bedarfsgesteuerter Synchronisierungen interaktiv löst.Select Allow Subscriber to resolve conflicts interactively during on-demand synchronization.
  5. Klicken Sie auf OK.Click OK.
  6. Wenn Sie sich im Dialogfeld Veröffentlichungseigenschaften - <Publication> befinden, klicken Sie auf OK, um die Einstellungen zu speichern und das Dialogfeld zu schließen.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

Angeben, dass ein Abonnement die interaktive Konfliktlösung verwendetSpecify that a subscription should use interactive conflict resolution

  1. Geben Sie im Dialogfeld Abonnementeigenschaften - <Subscriber>: <SubscriptionDatabase> für die Option Konflikte interaktiv lösen den Wert TRUE an.In the Subscription Properties - <Subscriber>: <SubscriptionDatabase> dialog box, specify a value of True for the Resolve conflicts interactively option. Weitere Informationen zum Zugreifen auf dieses Dialogfeld finden Sie unter View and Modify Push Subscription Properties und View and Modify Pull Subscription Properties.For more information about accessing this dialog box, see View and Modify Push Subscription Properties and View and Modify Pull Subscription Properties.
  2. Klicken Sie auf OK.Click OK.

Verwenden von Transact-SQLUse Transact-SQL

Sie können programmgesteuert angeben, dass ein Abonnent diese grafische Benutzeroberfläche zur Auflösung von Artikelkonflikten verwendet, wenn ein Pullabonnement für eine Mergeveröffentlichung erstellt wird.You can programmatically specify that a Subscriber will use this graphical interface to resolve article conflicts when a pull subscription to a merge publication is created. Im interaktiven Konfliktlöser werden nur Konflikte in Artikeln, die diese Option unterstützen, angezeigt.Only conflicts in articles that support this option will be displayed in the Interactive Resolver.

Erstellen eines Mergepullabonnements, das den interaktiven Konfliktlöser verwendetCreate a merge pull subscription that uses the Interactive Resolver

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_helpmergearticle aus, und geben Sie dabei @publication an.At the Publisher on the publication database, execute sp_helpmergearticle, specifying @publication. Betrachten Sie den Wert von allow_interactive_resolver für jeden Artikel im Resultset, für das der interaktive Konfliktlöser verwendet wird.Note the value of allow_interactive_resolver for each article in the result set for which the Interactive Resolver will be used.
    • Wenn dieser Wert 1lautet, wird der Interaktive Konfliktlöser verwendet.If this value is 1, the Interactive Resolver will be used.
    • Wenn dieser Wert 0lautet, müssen Sie zuerst den interaktiven Konfliktlöser für jeden Artikel aktivieren.If this value is 0, you must first enable the Interactive Resolver for each article. Führen Sie hierzu sp_changemergearticle aus, und geben Sie dabei @publication, @article, den Wert allow_interactive_resolver für @property sowie den Wert TRUE für @value an.To do this, execute sp_changemergearticle, specifying @publication, @article, a value of allow_interactive_resolver for @property, and a value of true for @value.
  2. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_addmergepullsubscriptionaus.At the Subscriber on the subscription database, execute sp_addmergepullsubscription. Weitere Informationen finden Sie unter Create a Pull Subscription.For more information, see Create a Pull Subscription.
  3. Führen Sie auf dem Abonnenten für die Abonnentendatenbank sp_addmergepullsubscription_agentaus, und geben Sie die folgenden Parameter an:At the Subscriber on the subscription database, execute sp_addmergepullsubscription_agent, specifying the following parameters:
    • @publisher, @publisher_db (die veröffentlichte Datenbank) und @publication.@publisher, @publisher_db (the published database), and @publication.
    • Den Wert TRUE für @enabled_for_syncmgr.A value of true for @enabled_for_syncmgr.
    • Den Wert TRUE für @use_interactive_resolver.A value of true for @use_interactive_resolver.
    • Die für den Merge-Agent erforderlichen Sicherheitskontoinformationen.The security account information required by the Merge Agent. Weitere Informationen finden Sie unter Create a Pull Subscription.For more information, see Create a Pull Subscription.
  4. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergesubscriptionaus.At the Publisher on the publication database, execute sp_addmergesubscription.

Definieren eines Artikels, der den interaktiven Konfliktlöser unterstütztDefine an article that supports the Interactive Resolver

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergearticleaus.At the Publisher on the publication database, execute sp_addmergearticle. Geben Sie den Namen der Veröffentlichung, zu der der Artikel gehört, für @publication, den Namen des Artikels für @article, das Datenbankobjekt, das veröffentlicht wird, für @source_object und den Wert TRUE für @allow_interactive_resolver an.Specify the name of the publication to which the article belongs for @publication, a name for the article for @article, the database object being published for @source_object, and a value of true for @allow_interactive_resolver. Weitere Informationen finden Sie unter Definieren eines Artikels.For more information, see Define an Article.

Konfliktnachverfolgungs- und -lösungsebene für MergeartikelConflict Tracking and Resolution Level for Merge Articles

In diesem Thema wird beschrieben, wie die Konfliktnachverfolgung und die Auflösungsebene für Mergeartikel in SQL Server 2019 (15.x)SQL Server 2019 (15.x) mithilfe von SQL Server Management StudioSQL Server Management Studio oder Transact-SQLTransact-SQLangegeben werden.This topic describes how to specify the conflict tracking and resolution level for merge articles in SQL Server 2019 (15.x)SQL Server 2019 (15.x) by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

Wenn ein Abonnement für eine Mergeveröffentlichung synchronisiert wird, prüft die Replikation auf Konflikte, die sich ergeben, wenn der Verleger und der Abonnent die gleichen Daten ändern.When a subscription to a merge publication is synchronized, replication checks for conflicts caused by changes to the same data made at both the Publisher and the Subscriber. Sie können angeben, ob Konflikte auf Zeilenebene erkannt werden, wobei jede Änderung in der Zeile als Konflikt eingestuft wird, oder auf Spaltenebene, wobei nur die Änderungen in derselben Spalte und derselben Zeile als Konflikte eingestuft werden.You can specify whether conflicts are detected at the row-level, where any change to the row is considered a conflict, or column-level, where only changes to the same row and column are considered a conflict. Die Konfliktlösung für Artikel wird auf Zeilenebene ausgeführt.Conflict resolution for articles is performed at the row-level. Weitere Informationen zur Konflikterkennung und -lösung bei logischen Datensätzen finden Sie unter Detecting and Resolving Conflicts in Logical Records.For more information about conflict detection and resolution when logical records are used, see Detecting and Resolving Conflicts in Logical Records.

EinschränkungenLimitations and Restrictions

  • Wenn Sie die Nachverfolgungsebene nach dem Initialisieren von Abonnements ändern, müssen diese Abonnements erneut initialisiert werden.If you modify the tracking level after subscriptions have been initialized, those subscriptions must be reinitialized. Weitere Informationen über die Auswirkungen von Eigenschaftsänderungen finden Sie unter Ändern von Veröffentlichungs- und Artikeleigenschaften.For more information about the effects of property changes, see Change Publication and Article Properties.
  • Bei der Nachverfolgung auf Zeilen- oder Spaltenebene erfolgt die Konfliktlösung immer auf Zeilenebene: die gewinnende Zeile überschreibt die verlierende Zeile.With row- and column-level tracking, conflict resolution is always performed at the row-level: the winning row overwrites the losing row. Bei der Mergereplikation können Sie auch angeben, dass Konflikte auf der Ebene logischer Datensätze nachverfolgt und gelöst werden. Diese Optionen sind in SQL Server Management StudioSQL Server Management Studiojedoch nicht verfügbar.Merge replication also allows you to specify that conflicts be tracked and resolved at the logical record level, but these options are not available from SQL Server Management StudioSQL Server Management Studio. Weitere Informationen zum Festlegen dieser Optionen aus gespeicherten Replikations Prozeduren finden Sie unter Definieren einer logischen Daten Satz Beziehung zwischen Mergetabellenartikeln.For information about setting these options from replication stored procedures, see Define a Logical Record Relationship Between Merge Table Articles.

Verwenden von SQL Server Management StudioUse SQL Server Management Studio

Geben Sie die Nachverfolgung auf Zeilen- oder Spaltenebene für Mergeartikel im Dialogfeld Artikeleigenschaften auf der Registerkarte Eigenschaften an. Dieses Dialogfeld ist im Assistenten für neue Veröffentlichung und im Dialogfeld Veröffentlichungseigenschaften - <Publication> verfügbar.Specify row- or column-level tracking for merge articles on the Properties tab of the Article Properties dialog box, which is available in the New Publication Wizard and the Publication Properties - <Publication> dialog box. Weitere Informationen zum Verwenden des Assistenten sowie Zugriff auf das Dialogfeld finden Sie unter Erstellen einer Veröffentlichung und Anzeigen und Ändern von Veröffentlichungseigenschaften.For more information about using the wizard and accessing the dialog box, see Create a Publication and View and Modify Publication Properties.

Angeben der Nachverfolgung auf Zeilen- oder SpaltenebeneSpecify row- or column-level tracking

  1. Wählen Sie auf der Seite Artikel des Assistenten für neue Veröffentlichung bzw. des Dialogfelds Veröffentlichungseigenschaften - <Publication> eine Tabelle aus.On the Articles page of the New Publication Wizard or the Publication Properties - <Publication> dialog box, select a table.
  2. Klicken Sie auf Artikeleigenschaftenund anschließend auf Eigenschaften des hervorgehobenen Tabellenartikels festlegen bzw. Eigenschaften aller Tabellenartikel festlegen.Click Article Properties, and then click Set Properties of Highlighted Table Article or Set Properties of All Table Articles.
  3. Wählen Sie im Dialogfeld Artikeleigenschaften <Article> auf der Registerkarte Eigenschaften einen der folgenden Werte für die Eigenschaft Nachverfolgungsebene aus: Nachverfolgung auf Zeilenebene oder Nachverfolgung auf Spaltenebene.On the Properties tab of the Article Properties <Article> dialog box, select one of the following values for the Tracking level property: Row-level tracking or Column-level tracking.
  4. Wenn Sie sich im Dialogfeld Veröffentlichungseigenschaften - <Publication> befinden, klicken Sie auf OK, um die Einstellungen zu speichern und das Dialogfeld zu schließen.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

Verwenden von Transact-SQLUse Transact-SQL

So geben Sie Konfliktverfolgungsoptionen für einen neuen Mergeartikel anTo specify conflict tracking options for a new merge article

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergearticle aus, und geben Sie dabei einen der folgenden Werte für @column_tracking an:At the Publisher on the publication database, execute sp_addmergearticle and specify one of the following values for @column_tracking:

    • true – Nachverfolgung auf Spaltenebene für den Artikel verwenden.true - Use column-level tracking for the article.
    • false – Nachverfolgung auf Zeilenebene verwenden (Standard).false - Use row-level tracking, which is the default.

Ändern der Konfliktverfolgungsoptionen für einen MergeartikelChange conflict tracking options for a merge article

  1. Um die Konfliktverfolgungsoptionen für einen Mergeartikel zu bestimmen, führen Sie sp_helpmergearticleaus.To determine the conflict tracking options for a merge article, execute sp_helpmergearticle. Achten Sie auf den Wert der column_tracking -Option im Resultset für den Artikel.Note the value of the column_tracking option in the result set for the article. Der Wert 1 bedeutet, dass die Nachverfolgung auf Spaltenebene verwendet wird, und der Wert 0 bedeutet, dass die Nachverfolgung auf Zeilenebene verwendet wird.A value of 1 means that column-level tracking is being used, and a value of 0 means that row-level tracking is being used.

  2. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changemergearticleaus.At the Publisher on the publication database, execute sp_changemergearticle. Geben Sie den Wert column_tracking für @property und einen der folgenden Werte für @value an:Specify a value of column_tracking for @property and one of the following values for @value:

    • true – Nachverfolgung auf Spaltenebene für den Artikel verwenden.true - Use column-level tracking for the article.
    • false – Nachverfolgung auf Zeilenebene verwenden (Standard).false - Use row-level tracking, which is the default.

    Geben Sie den Wert 1 sowohl für @force_invalidate_snapshot als auch für @force_reinit_subscription an.Specify a value of 1 for both @force_invalidate_snapshot and @force_reinit_subscription.

Verwalten von Löschvorgängen bei der NachverfolgungManage tracking deletes

Hinweis

Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt.This feature will be removed in a future version of Microsoft SQL Server. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Standardmäßig synchronisiert die Mergereplikation DELETE-Befehle zwischen dem Verleger und dem Abonnenten.By default, merge replication synchronizes DELETE commands between the Publisher and Subscriber. Die Mergereplikation ermöglicht Ihnen, Zeilen in der Abonnementdatenbank auch dann beizubehalten, wenn sie aus der Veröffentlichung gelöscht wurden und umgekehrt.Merge replication enables you to retain rows in the subscription database even when they have been deleted from the publication, and vice versa. Sie können bei der Erstellung eines neuen Artikels programmgesteuert festlegen, dass der DELETE-Befehl ignoriert wird, oder Sie können diese Funktionalität zu einem späteren Zeitpunkt mithilfe von gespeicherten Replikationsprozeduren aktivieren.You can programmatically specify that DELETE commands be ignored when creating a new article or you can enable this functionality at a later time using replication stored procedures.

Wichtig

Die Aktivierung dieser Funktionalität führt zu Nichtkonvergenz, was bedeutet, dass die dem Abonnenten verfügbaren Daten nicht genau den Daten des Verlegers entsprechen.Enabling this functionality will result in non-convergence, which means that data present at the Subscriber will not accurately reflect data at the Publisher. Sie müssen einen eigenen Mechanismus implementieren, um die gelöschten Zeilen zu entfernen.You must implement your own mechanism for manually removing deleted rows.

Angeben, dass Löschvorgänge für neue Mergeartikel ignoriert werden sollenSpecify that deletes be ignored for a new merge article

Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergearticle (Transact-SQL) aus.At the Publisher on the publication database, execute sp_addmergearticle (Transact-SQL). Geben Sie den Wert FALSE für @delete_tracking an.Specify a value of false for @delete_tracking. Weitere Informationen finden Sie unter Definieren eines Artikels.For more information, see Define an Article.

Hinweis

Wenn die Quelltabelle eines Artikels bereits in einer anderen Veröffentlichung veröffentlicht wurde, muss der Wert von delete_tracking für beide Artikel gleich sein.If the source table for an article is already published in another publication, the value of delete_tracking must be the same for both articles.

Angeben, dass Löschvorgänge für einen vorhandenen Mergeartikel ignoriert werden sollenSpecify that deletes be ignored for an existing merge article

  1. Führen Sie sp_helpmergearticle (Transact-SQL) aus, um zu ermitteln, ob die Fehlerkompensierung für einen Artikel aktiviert ist, und achten Sie im Resultset auf den Wert von delete_tracking.To determine if error compensation is enabled for an article, execute sp_helpmergearticle (Transact-SQL) and note the value of delete_tracking in the result set. Ist dieser Wert 0, werden Löschvorgänge bereits ignoriert.If this value is 0, deletes are already being ignored.

  2. Ist der in Schritt 1 ermittelte Wert 1 ist, führen Sie sp_changemergearticle (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank aus.If the value from step 1 is 1, execute sp_changemergearticle (Transact-SQL) at the Publisher on the publication database. Geben Sie den Wert delete_tracking für @property und den Wert FALSE für @value an.Specify a value of delete_tracking for @property, and a value of false for @value.

    Hinweis

    Wenn die Quelltabelle eines Artikels bereits in einer anderen Veröffentlichung veröffentlicht wurde, muss der Wert von delete_tracking für beide Artikel gleich sein.If the source table for an article is already published in another publication, the value of delete_tracking must be the same for both articles.

VerarbeitungsreihenfolgeProcessing Order

Die Mergereplikation ermöglicht es Ihnen, die Reihenfolge anzugeben, in der Artikel während des Synchronisierungsprozesses vom Merge-Agent verarbeitet werden.Merge replication enables you to specify the order in which articles are processed by the Merge Agent during the synchronization process. Sie können den Artikeln bei ihrer Erstellung mithilfe gespeicherter Replikationsprozeduren programmgesteuert eine Reihenfolge zuweisen.You can assign an order to each article programmatically when creating an article using replication stored procedures. Artikel werden in der Reihenfolge vom niedrigsten zum höchsten Wert verarbeitet.Articles are processed in order from lowest to highest value. Wenn zwei Artikel denselben Wert haben, werden sie gleichzeitig verarbeitet.If two articles have the same value, they are processed concurrently.

Funktionsweise bei der Festlegung der VerarbeitungsreihenfolgeHow Processing Order is Determined

Während der Mergesynchronisierung werden die Artikel standardmäßig entsprechend den Abhängigkeiten zwischen den Objekten geordnet. Zu diesen Abhängigkeiten gehören auch die in den Basistabellen definierten DRI-Einschränkungen (Deklarative referenzielle Integrität).During merge synchronization, articles are, by default, processed in the order required by the dependencies between objects, including the declarative referential integrity (DRI) constraints defined on the base tables. Bei der Verarbeitung werden die Änderungen in einer Tabelle aufgezählt und dann angewendet.Processing involves enumerating the changes to a table and then applying those changes. Wenn es keine deklarative referenzielle Integrität gibt, zwischen den Tabellenartikeln aber Joinfilter oder logische Datensätze vorhanden sind, werden die Artikel entsprechend der in den Filtern und logischen Datensätzen festgelegten Reihenfolge verarbeitet.If no DRI is present but join filters or logical records exist between table articles, the articles are processed in the order required by the filters and logical records. Artikel, für die keine Abhängigkeiten per DRI, Joinfiltern, logischen Datensätzen oder anderen Methoden bestehen, werden anhand ihres in der sysmergearticles (Transact-SQL)-Systemtabelle verzeichneten Artikelspitznamens verarbeitet.Articles not related to any other article through DRI, join filters, logical records, or other dependencies are processed according to the article nickname in the sysmergearticles (Transact-SQL) system table.

Angenommen, es gibt eine Veröffentlichung mit der SalesOrderHeader - und der SalesOrderDetail -Tabelle mit einer SalesOrderID -Primärschlüsselspalte in der SalesOrderHeader -Tabelle und einer zugehörigen SalesOrderID -Fremdschlüsselspalte in der SalesOrderDetail -Tabelle.Consider a publication that includes the tables SalesOrderHeader and SalesOrderDetail with a primary key column SalesOrderID in the SalesOrderHeader table and a corresponding foreign key column SalesOrderID in the SalesOrderDetail table. Bei der Synchronisierung verhindert die Mergereplikation Fremdschlüsselverletzungen, indem alle neuen Zeilen zuerst in SalesOrderHeader und erst dann die entsprechenden Zeilen in SalesOrderDetaileingefügt werden.During synchronization, merge replication prevents foreign key violations by inserting any new rows in SalesOrderHeader before inserting associated rows in SalesOrderDetail. Genauso werden erst Zeilen aus der SalesOrderDetail -Tabelle gelöscht, bevor die entsprechenden Zeilen auch aus der SalesOrderHeader-Tabelle gelöscht werden.Similarly, rows are deleted from SalesOrderDetail before the associated row is deleted from SalesOrderHeader.

In einigen Anwendungen wird die referenzielle Integrität durch Datenbanktrigger oder auf Anwendungsebene und nicht per DRI erzwungen.However, in some applications referential integrity is enforced through database triggers, or at the application level, rather than through DRI. So könnte z. B. die oben beschriebene Veröffentlichung statt DRI in der SalesOrderDetail -Tabelle einen INSERT-Trigger besitzen, der sicherstellt, dass die zugehörige Zeile in der SalesOrderHeader -Tabelle vorhanden ist, bevor eine Einfügung zugelassen wird.Given the publication described above, instead of DRI, the SalesOrderDetail table could have an insert trigger that ensures the associated row in the SalesOrderHeader table exists before allowing an insert. DieSalesOrderHeader -Tabelle könnte einen DELETE-Trigger enthalten, der sicherstellt, dass in SalesOrderDetail keine zugehörigen Zeilen vorhanden sind, bevor eine Löschung zugelassen wird.SalesOrderHeader could have a delete trigger that ensures there are no associated rows in SalesOrderDetail before allowing a delete. Bei der Mergereplikation werden zur Bestimmung der Verarbeitungsreihenfolge der Artikel keine Trigger berücksichtigt, da dieser Replikationstyp das Ergebnis des Triggers nicht vorhersehen kann.Merge replication does not take into account triggers when determining processing order of articles because it cannot determine what the result of the trigger will be until it has fired. Darüber hinaus kann diese Replikation auch keine auf Anwendungsebene definierten Einschränkungen berücksichtigen.Similarly, replication cannot take into account constraints defined at the application level.

Wenn die referenzielle Integrität durch Trigger oder auf Anwendungsebene gewahrt wird, müssen Sie die Reihenfolge angeben, in der die Artikel verarbeitet werden sollen.When referential integrity is maintained through triggers or at the application level, you should specify the order in which the articles should be processed. Im Beispiel mit den Triggern würden Sie dann angeben, dass die SalesOrderHeader -Tabelle vor der SalesOrderDetail-Tabelle zu verarbeiten ist, weil die Artikelreihenfolge auf der Einfügereihenfolge basiert.In the example with triggers, you would specify that the SalesOrderHeader table should be processed before SalesOrderDetail, because article ordering is based on insert order. Bei der Mergereplikation wird die Reihenfolge der Löschungen automatisch umgekehrt.Merge replication will automatically reverse the order for deletes. Das Nichtfestlegen einer Artikelverarbeitungsreihenfolge führt nicht zu einem Scheitern der Mergereplikation, weil der Merge-Agent mit der Verarbeitung der Artikel fortfährt, wenn es zu einer Einschränkungsverletzung kommt. Wenn die anderen Artikel verarbeitet sind, versucht der Agent, alle Operationen, die fehlgeschlagen sind, erneut auszuführen.Merge replication will not fail without article ordering, because the Merge Agent continues to process articles if a constraint violation occurs; it then retries any operations that failed after other articles have been processed. Durch das Angeben einer Artikelverarbeitungsreihenfolge werden lediglich solche Neuversuche und die damit verbundene zusätzliche Verarbeitung verhindert.Specifying article order simply avoids retries and the additional processing associated with them. Wenn Sie eine falsche Reihenfolge angeben (z. B. eine, bei der die Detaildatensätze vor den Headerdatensätzen verarbeitet werden), versucht die Mergereplikation die Verarbeitung so lange, bis sie gelingt.If you specify an incorrect order (for example, one that results in detail records being processed before header records), merge replication will retry processing until it succeeds.

Neuer ArtikelNew article

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergearticle (Transact-SQL) aus.At the Publisher on the publication database, execute sp_addmergearticle (Transact-SQL). Geben Sie für @processing_order einen ganzzahligen Wert an, der die Verarbeitungsreihenfolge für den Artikel darstellt.Specify an integer value that represents the processing order for the article for @processing_order. Weitere Informationen finden Sie unter Definieren eines Artikels.For more information, see Define an Article.

    Hinweis

    Wenn Sie sortierte Artikel erstellen, sollten Sie Lücken zwischen den Werten für die Artikelreihenfolge lassen.When creating ordered articles, you should leave gaps between the article order values. Dadurch wird das Festlegen neuer Wert zu einem späteren Zeitpunkt erleichtert.This makes it easier to set new values in the future. Wenn Sie beispielsweise für drei Artikel eine bestimmte Verarbeitungsreihenfolge angeben möchten, legen Sie den Wert für @processing_order auf 10, 20 und 30 anstatt auf 1, 2 und 3 fest.For example, if you have three articles for which you need to specify a fixed processing order, set the value of @processing_order to 10, 20, and 30 rather than 1, 2, and 3, respectively.

Bereits vorhandener ArtikelExisting article

  1. Um die Verarbeitungsreihenfolge eines Artikels zu ermitteln, führen Sie sp_helpmergearticle (Transact-SQL) aus, und betrachten den Wert von processing_order im Resultset.To determine processing order of an article, execute sp_helpmergearticle (Transact-SQL) and note the value of processing_order in the result set.
  2. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changemergearticle (Transact-SQL) aus.At the Publisher on the publication database, execute sp_changemergearticle (Transact-SQL). Geben Sie für @property den Wert processing_order und für @value einen ganzzahligen Wert an, der die Verarbeitungsreihenfolge darstellt.Specify a value of processing_order for @property and an integer value that represents the processing order for @value.

Weitere InformationenSee Also

Optimieren der Leistung der Mergereplikation durch nur herunterladbare Artikel Optimize Merge Replication Performance with Download-Only Articles
Define an Article Define an Article
Anzeigen und Ändern von ArtikeleigenschaftenView and Modify Article Properties