Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie synchronisiert man zwei (oder n) Replikationsprozesse für SQL Server-Datenbanken?

Es scheint, dass die gegebene Aufgabe nicht in den gegebenen Einschränkungen gelöst werden kann. Wenn ich es richtig verstanden habe, sind die Anzahl der Datenbanken und das Zeilenschema Konstanten.

Also, Variablen, die übrig geblieben sind:

  • Zusätzliche "Injektionen" in die Datenbank
  • Zeitliche Tricks
  • Löst Tricks aus
  • "Late Binding" von Änderungen, die nicht rechtzeitig repliziert werden

Derzeit habe ich nur eine Idee gefunden, die zu funktionieren scheint:

  1. Fügen Sie einen Trigger zur Tabelle „Zeilen“ hinzu, um den Zeitstempel des Datensatzes „Bestellung“ (last_line_time) zu ändern
  2. Warten Sie in der Replik, bis eine Zeile mit der Zeit gleich last_line_time erscheint.
    • Wenn max(lines.line_time)> order.last_line_time ist, dann ist die Bestellung obsolet
    • Wenn max(lines.line_time)
    • Wenn max(lines.line_time) ==order.last_line_time, dann ist erstmal alles in Ordnung :)

Dieser Fall kann jedoch in einer Endlosschleife fehlschlagen, wenn Lines ständig geändert werden und die Replikation der Lines-Tabelle immer hinterherhinkt.