Freigeben über


Erkennung und Lösung von Replikationskonflikten

Bei Synchronisierungen nach der Erstsynchronisierung treten möglicherweise Konflikte zwischen Änderungen an Daten auf einem Abonnenten und Änderungen auf einem anderen Abonnenten oder auf dem Verleger auf. Wenn Sie die Veröffentlichung erstellen, weisen Sie einen Konfliktlöser zur Beseitigung solcher Konflikte zu.

Erkennen von Konflikten

Während der Synchronisierung erkennt der Merge-Agent, der auf dem Verleger ausgeführt wird, alle Datenkonflikte und bestimmt dann auf der Grundlage des der Veröffentlichung zugeordneten Konfliktlösers, welche Daten angenommen und an andere Standorte weitergegeben werden.

Microsoft SQL Server Compact 3.5 unterstützt bei der Synchronisierung mit SQL Server 2005-, SQL Server 2008- und SQL Server 2008 R2-Verlegern die Nachverfolgung sowohl auf Zeilen- als auch auf Spaltenebene.

Hinweis

Die Synchronisierung mit SQL Server 2000 wird in SQL Server Compact 3.5 nicht unterstützt.

Verwenden von Konfliktlösern

Nach dem Erkennen eines Konflikts startet der Merge-Agent den für den Artikel ausgewählten Konfliktlöser. Es kann sich dabei um den Standardkonfliktlöser, einen der anderen bereitgestellten Konfliktlöser oder um einen benutzerdefinierten Konfliktlöser handeln. Die angenommenen Änderungen werden nach den Regeln des Konfliktlösers ausgewählt. SQL Server Compact 3.5-Abonnentenkonflikte werden immer auf dem Verleger erkannt, gelöst und protokolliert.

Wichtig

Der Mehrbenutzerzugriff ermöglicht nun auch Datenänderungen während der Synchronisierung. Diese Änderungen können zu einem clientseitigen Konflikt führen. Clientseitige Konflikte werden auf dem Abonnenten erkannt, jedoch nicht behoben. Der Konflikt wird bei der nächsten Synchronisierung erneut auf dem Verleger erkannt und behoben. Weitere Informationen finden Sie unter Mehrbenutzerzugriff und Synchronisierung.

Konfliktlöser können die Quelle der Datenänderung oder den Prioritätswert des Abonnenten zur Lösung von Konflikten verwenden. So folgt beispielsweise der Standardkonfliktlöser der Regel, dass Änderungen auf dem Verleger Änderungen auf dem Abonnenten immer außer Kraft setzen. Sie können wahlweise einen anderen Konfliktlöser verwenden, der immer Änderungen auf dem Abonnenten jenen auf dem Verleger vorzieht.

Hinweis

SQL Server Compact 3.5-Clients weisen immer den Prioritätswert 0 auf. Deshalb räumt ein auf Prioritätswerten basierter Konfliktlöser Änderungen auf dem Gerät keine Priorität ein.

Weitere Informationen zur Konflikterkennung und -lösung bei der Mergereplikation finden Sie im zugehörigen Thema in der Onlinedokumentation zu SQL Server.

Hinweis

Mergekonfliktlöser, die auf gespeicherten Prozeduren basieren, werden von SQL Server Compact 3.5-Abonnements nicht unterstützt.

Verwenden benutzerdefinierter Konfliktlöser

Bei benutzerdefinierten Konfliktlösern kann Geschäftslogik zur Replikation hinzugefügt werden. Ein benutzerdefinierter Konfliktlöser ist eine in verwaltetem oder systemeigenem Code erstellte DLL. Um verwendet zu werden, muss der benutzerdefinierte Konfliktlöser auf dem Verleger und dem Server mit IIS mithilfe der gespeicherten Prozedur sp_registercustomeresolver registriert werden. Die gespeicherte Prozedur sp_registercustomeresolver umfasst den is_dotnet_assembly-Parameter, den Sie bei einem Konfliktlöser in verwaltetem Code auf TRUE und bei einer systemeigenen DLL auf FALSE festlegen.

Wichtig

Ein benutzerdefinierter Konfliktlöser muss auf dem Computer, auf dem IIS ausgeführt wird, sowie auf dem Computer mit SQL Server registriert werden.

Siehe auch

Andere Ressourcen

Verwenden der Nachverfolgung auf Zeilen- und Spaltenebene