Hallo,
ich habe folgendes Problem mit dem SQL Server 2005.
Ich habe für eine Tabelle eingestellt, dass der Primärschlüssel automatisch um 1 inkrementiert wird, sofern ein neuer Datensatz hinzugefügt wird. Die Datensätze importiere ich per SSIS-Projekt. Zusätzlich habe ich eingestellt, dass doppelte Werte nicht in die DB geschrieben werden, da ich das SSIS-Projekt mehrfach ausführen muss. Leider wird die ID auch bei doppelten Einträgen hochgezählt.
Beispiel:
Die ersten Einträge haben die ID 1,2,3,4 und 5. Dann starte ich das SSIS-Projekt in dem die ersten Datensätze ebenfalls wieder vorhanden und ein neuer Eintrag. Die ersten Einträge werden zwar nicht erneut geschrieben, aber der neue Eintrag bekommt die ID 11. Kann man irgendwo einstellen, dass die ID bei doppelten Werten nicht erhöht wird, so dass ein neuer Eintrag die ID 6 bekommen würde?
Danke
M-l-G
Hallo,
das Verhalten der DB ist so wie ich es erwarten würde. Wo ist dein Problem? Die Datenbank kann ja schließlch nicht von alleine wissen, welches das Kriterium ist welches eine Datensatz „doppelt“ macht.
Joey
Doch kann sie…
Man kann einstellen, auf Grund welcher Spalteneinträge ein Datensatz als doppelt eingestuft wird.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Dann solltest du die entsprechenden Spalten, mit denen MS SQL feststellt soll, was doppelt ist, eindeutig indizieren.
Gruß Epa
Hi!
Ganz was anderes: Was ist so schlimm daran, das die ID nicht durchgehend ist?
Grüße,
Tomh
Im SSIS oder in der DB durch einen Unique Index?
Ich denke aber dein größtes Problem ist der Primärschlüssel. Da muß man jedem Benutzer noch mal auf die Stirn tätowieren:
Ein Primärschlüssel der inkemetiert wird hat NUR eine einzige Aufgabe in einer Tabelle:
Er muß eindeutig sein!
Was er nicht sein muß: Ein bestimmtes Format oder Reihenfolge einhalten, es wird nicht damit gezählt, gerechnet, interpretiert oder sonst was gemacht.
Er wird auschließlich dazu benutzt einen Datensatz der Tabelle EINDEUTIG zu identifizieren!
Verstanden?
HTH
Joey
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]