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 Publikation 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 Publikation zugeordneten Konfliktlösers, welche Daten angenommen und an andere Standorte weitergegeben werden.
Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) unterstützt bei der Synchronisierung mit SQL Server 2005-Verlegern sowohl die Nachverfolgung auf Zeilen- als auch auf Spaltenebene. Bei der Synchronisierung mit SQL Server 2000-Verlegern unterstützt SQL Server Compact Edition nur die Nachverfolgung auf Zeilenebene.
Nachverfolgung auf Zeilenebene in SQL Server Compact Edition
Beim Synchronisieren mit einem SQL Server 2000-Verleger ruft das SQL Server Compact Edition-Datenbankmodul die Nachverfolgung auf, wenn eine Zeile eingefügt, aktualisiert oder gelöscht wird. Bei der Erkennung von Konflikten auf Zeilenebene werden Änderungen an entsprechenden Zeilen als Konflikt erachtet, selbst wenn die Änderungen an derselben Spalte vorgenommen werden. Angenommen, eine Änderung wird auf dem Verleger an der Adressspalte einer Zeile vorgenommen, während auf dem Abonnenten die Rufnummernspalte der entsprechenden Zeile geändert wird. Bei der Nachverfolgung auf Zeilenebene wird ein Konflikt erkannt, da Änderungen an derselben Zeile vorgenommen werden.
Hinweis: |
---|
Selbst wenn die Nachverfolgung auf Spaltenebene auf dem SQL Server 2000-Verleger konfiguriert wurde, markiert SQL Server Compact Edition die Zeile so, als ob jede Spalte geändert wurde. Die Nachverfolgung auf Spaltenebene wird nur von Verlegern mit SQL Server 2005 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 Edition-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 Edition-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 basierend auf gespeicherten Prozeduren werden von Abonnements von SQL Server Compact Edition 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.