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.
Gilt für:SQL Server
Benutzerdefinierte Konfliktlöser ermöglichen eine höhere Flexibilität als der Standardmechanismus für die Konfliktlösung. Darüber hinaus kann mit Ihnen Geschäftslogik implementiert werden, die von den Anwendungen benötigt wird, die die replizierten Daten verwenden. Ein COM-basierter benutzerdefinierter Konfliktlöser ist eine DLL (Dynamic Link Library), die die ICustomResolver -COM-Schnittstelle, deren Methoden und Eigenschaften sowie andere unterstützende Schnittstellen und Typdefinitionen implementiert, die speziell für die Konfliktlösung entworfen wurden.
Hinweis
Es wird empfohlen, nach Möglichkeit einen Geschäftslogikhandler statt eines COM-basierten benutzerdefinierten Konfliktlösers zu verwenden. Weitere Informationen zu Geschäftslogikhandlern finden Sie unter Ausführen der Geschäftslogik während der Mergesynchronisierung.
Um einen benutzerdefinierten COM-Resolver zu erstellen, können Sie die Typbibliothek verwenden, die im replrec.dll; bereitgestellt wird. standardmäßig ist diese Bibliothek unter drive><:\Program Files\Microsoft SQL Server\nnn\COM installiert.
Sie müssen Folgendes vor dem Schreiben eines benutzerdefinierten COM-Konfliktlösers entscheiden:
Die Arten von Zeilenänderungen, die Sie auflösen möchten, z. B. Aktualisierungen, Einfügungen und Löschungen, und ob der Resolver beim Hochladen von Mergeänderungen, beim Herunterladen von Mergeänderungen oder bei beidem aufgerufen werden soll. Sie können einen Änderungstyp, alle Änderungen oder eine beliebige Kombination daraus angeben. Der Standardkonfliktlöser für Mergeprozesse verarbeitet alle Konflikte, die nicht von einem benutzerdefinierten Konfliktlöser abgedeckt werden.
Ob beim Lösen des Konflikts das Protokollieren auf Spaltenebene verwendet werden soll. Wenn das Protokollieren auf Spaltenebene aktiviert ist, werden nur Daten in den Spalten, in denen ein Konflikt vorhanden ist, als Konflikt markiert; anderenfalls werden die Daten zusammengeführt. Konflikte werden jedoch wie bei der Nachverfolgung auf Zeilenebene gelöst: Der Prioritätsgewinner überschreibt die gesamte Datenzeile (die Daten können jedoch eine Mischung aus Werten vom Verleger, Werten von den Abonnenten oder geänderten Werten sein, die weder vom Verleger noch von den Abonnenten stammen). Weitere Informationen finden Sie unter Erkennen und Beseitigen von Konflikten bei der Mergereplikation.
Informationen zum Implementieren eines COM-basierten benutzerdefinierten Konfliktlösers finden Sie unter Implementieren eines benutzerdefinierten Konfliktlösers für einen Mergeartikel
Ein benutzerdefinierter Resolver wird für einen Artikel festgelegt, nicht für eine gesamte Publikation. Derselbe Konfliktlöser kann mit mehreren Artikeln verwendet werden, jedoch bezieht sich die Logik in benutzerdefinierten Konfliktlösern häufig auf eine bestimmte Tabelle. Wenn die im Artikel verwendete Tabelle geändert wird, nachdem der Konfliktlöser erstellt wurde (z. B. durch Umbenennen des Spaltennamens, der bei der Konfliktlösung verwendet wird), muss der benutzerdefinierte Konfliktlöser gegebenenfalls geändert und erneut kompiliert werden.
Informationen zum Angeben eines benutzerdefinierten Resolvers finden Sie unter Angeben eines Mergeartikelresolvers.