MSSQL - Eindeutige Nummern bei Replikation OHNE identity
Axel Hoogestraat
- datenbank
Hallo,
ich habe mal wieder eine Frage zu MSSQL. Es besteht eine Tabelle "Kunden" die ganz normal einen Primarykey hat. Dieser ist bei der Replikation (MSSQL <-> MSDE) so konfiguriert, dass jeder Abonnent einen eigenen ID-Bereich hat. Soweit so gut.
Nun soll jeder Kunde aber auch eine Kundennummer haben, die beispielsweise zwischen 1000 und 3000 liegt.
Um jeweils die nächste freie Nummer zu ermitteln, wird lediglich MAX(kundennummer) + 1 verwendet.
Da ist nun das Problem. Wenn jemand auf einem Client (im Offline-Betrieb) einen Kunden anlegt, und gleichzeitig ein anderer Client, exisitieren nach der Replikation 2 Kunden mit der gleichen Kundennummer. Um das zu beheben, kann man aber leider kein Identity-Field daraus machen, da sich die Kunden noch in mehrere Kategorie unterscheiden. Eine andere Kundenkategorie hat beispielsweise die Kudnennummern 5000 - 8000.
Hat dazu jemand einen Tip für mich?
Vielen Dank im Voraus
Schöne Grüße
Axel
Hallo,
wenn jeder Client offline arbeitet, gibts es Probleme wenn jeder einen neuen "neuen" Kunden anlegt und eine offline-neue Kd-Nr vergibt. Sie wissen ja nicht, daß die neue kd-nr bereits vielleicht schon vergeben wurde.
Kundennummern sind zentrale Daten und müssen zentral verwaltet werden, damit es keine doppelten ID-Vergaben gibt.
Wenn also jeder (beliebig viele) Clients offline Kunden erfassen, dann kann keine endgültige Kundennummer vergeben werden. Hierzu gibts eigentlich nur eine einzige Lösung: Pseudo-Kd-Nummern, die dann der Zentrale mitgeteilt werden.
Die Zentrale ordnet nach Eingang eine endgültig gültige Kundennummer zu.
Beispiel:
client A sendet zwei neue Kunden.
Pseudo-Kundennummern: C-A-99991
und C-A-99992
Client B sendet einen neuen Kunden.
Pseudo-Kundennummern: C-B-99991
Client C senden drei neue Kunden.
Pseudo-Kundennummern: C-C-99991, C-C-99992 und C-C-99993
Alle Neukunden kommen in der "Zentrale" an, diese Vergibt
die endgültigen Kundennummern:
xxxxx, xxxxx,xxxxx,xxxxx,xxxxx,xxxxx,xxxxx
Es ist sicher komplex, die Pseudo-Kundennummern bei den clients zu
pflegen, ist aber die einzige Möglichkeit Doppelvergaben zu verhindern.
Viele Grüße
aus dem Allgäu
Dieter
PS: Ich hoffe die Frage richtig verstanden zu haben. Bin gern bereit
weiter Aspekte zu diskutieren.
Hallo,
entschuldige bitte die verspätete Antwort und vielen Dank für die Hilfe.
Du hast die Frage genau richtig verstanden und eine derartige Antwort habe ich auch schon erwartet.
Dann werde ich mir was einfallen lassen, wie ich das umsetze.
Nochmals vielen Dank
Schöne Grüße
Axel