Frage

Ich habe auf einigen Ressourcen sieht bereits und will nur klären und eine Stellungnahme zu bekommen.

Zu allererst vermeidet völlig Probleme konnten wir einfach nicht mit Identitätsspalten stören als Primärschlüssel stattdessen hat sie selbst erzeugt und haben gerade diese Werte in beiden Richtungen repliziert vorausgesetzt, sie jederzeit der Schöpfung immer eindeutig sind.

Für die Zwecke dieser Frage ich spreche, 2 oder mehr Wege-Replikation globalen Zugangsprobleme zu lösen, und wir tun Identitätsspalten haben.

Jetzt setzen wir sollten Transaktionsreplikation und beide Datenbanken miteinander replizieren.

Wie ich es verstehe ordnen Sie eine Reihe von Startwerte für jeden Datenbankserver, und es wird diese nutzen, Sie wissen, dass es eindeutige Ursache Sie gab Bereiche, die sich nicht kreuzen. So bedeutet das während der Replikation eingefügt diese Werte in die Saat Spalte?

Wenn Sie also Bereiche zuteilen 1-10 und 11-20 zu 2 Server einmal pro Server 10 Zeilen eingefügt hat, wird Sie Samen 1-20 in beiden Datenbanken haben?

War es hilfreich?

Lösung

Es gibt die Option „ NOT FOR REPLICATION “das kann zu Identitätsspalten (und Trigger und anderen Einschränkungen) angewandt werden.

In Ihrem Beispiel server1 würde 1-10 Samen, sondern einfach repliziert 11-20 akzeptieren.

Ein paar Möglichkeiten, um Einstellung Ihre Samen:

Entweder: Setzen Sie die Samen / Inkrementen mit NOT FOR REPLICATION wie folgt

  • Seed 1, erhöhe 2
  • Seed 2, erhöhe 2
  • Seed -1, erhöht -2
  • Seed -2, erhöht -2
  • Seed 1000000001, erhöhe 2
  • Seed 1000000002, erhöhe 2
  • Seed -1000000002, erhöht -2
  • Seed -1000000001, erhöht -2

Dies gibt Ihnen 500.000.000 pro Server für 8 Server

Oder: Fügen Sie eine zweite Spalte namens ServerID zusammengesetzte Schlüssel zu geben, verwenden Sie NOT FOR REPLICATION für die ID-Spalte

Diese Skalen bis zu, sagen wir, 256 Server für Tinyint mit 2 ^ 32 Zeilen pro Server

So oder so funktioniert ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top