Meine Zusammenführungsreplikation hat heute Morgen einwandfrei funktioniert. Seit ein oder zwei Stunden wird in meinen Synchronisationsstatusfenstern immer wieder folgende Meldung angezeigt:
Die Thread-ID 3108 wartet 15 Sekunden, bevor die Abfrage in Publisher 'MSI-SQL-MAS01' wiederholt wird.
Kann mir jemand sagen, was los ist? Die Datenbank ist 500 GB groß und wird auch ziemlich häufig verwendet. Die Replikation muss jedoch funktionieren. Wir müssen die Datenbank beim Abonnenten synchron halten.
Auch das sehe ich nach ungefähr einer Minute:
Eine auf dem Publisher 'MSI-SQL-MAS01' ausgeführte Abfrage ist fehlgeschlagen, da die Verbindung als Opfer eines Deadlocks ausgewählt wurde. Bitte führen Sie den Zusammenführungsprozess erneut aus, wenn dieser Fehler nach internen Wiederholungen durch den Zusammenführungsprozess weiterhin angezeigt wird.
Wie ich gerade sagte, hat die Replikation heute Morgen einwandfrei funktioniert. Ich habe auch den Zusammenführungsagenten wie den vorgeschlagenen Fehler neu gestartet, aber ohne Ergebnisse.
Ich habe es auch versucht
update sysmergepublications set [generation_leveling_threshold] = 0
sowohl bei der Abonnenten- als auch bei der Herausgeberdatenbank, aber es scheint kein Glück zu sein. Nur manchmal wird auch der folgende Fehler angezeigt:
Der Zusammenführungsprozess wiederholt einen fehlgeschlagenen Vorgang gemäß Artikel 'xx' - Grund: 'Der Zusammenführungsprozess konnte die Zeile nicht synchronisieren.'
Danke im Voraus.
Ich sehe meinen früheren Fehler nicht mehr. Das einzige was ich jetzt bekomme ist:
"Der Zusammenführungsprozess wiederholt einen fehlgeschlagenen Vorgang gemäß Artikel 'xx' - Grund: 'Der Zusammenführungsprozess konnte die Zeile nicht synchronisieren.'"
Der Profiler macht für mich keinen Sinn. Ich sehe keine relevanten Informationen.
Was macht es, wenn ich das Abonnement neu initialisiere? Ich hoffe, ich brauche dafür keinen neuen Schnappschuss, denn das wäre derzeit unmöglich. Die Datenbank ist über 500 GB groß und der Snapshot dauert über 9 Stunden. Die Datenbank ist ständig in Produktion und wird sehr häufig verwendet. Eine Sperre der Datenbank zum Erstellen eines Snapshots ist also kein Problem.
Okay, das sehe ich im Konfliktbetrachter:
Dieselbe Zeile wurde sowohl bei 'master_server' als auch bei 'Slave_server' aktualisiert. Der Resolver hat das Update von 'master_server' als Gewinner ausgewählt.
Wie ist es möglich, dass dieselbe Zeile sowohl auf dem Master- als auch auf dem Slave-Server aktualisiert wird, während unsere Anwendung mit dem Master-Server verbunden ist? Es sieht so aus, als würde etwas auf beiden Servern dieselbe Zeile mit unterschiedlichem Inhalt aktualisieren und den Merge-Agent zum Absturz bringen.