Hi,
ich habe ein recht eigenartiges Problem. Mit folgendem Befehl schicke ich Daten an einen SQL-Server:
Eigentlich sollte sich die ID immer um genau einen Wert erhöhen, falls ein neuer Eintrag erstellt wird. Die ID ist als Primärschlüssel ausgewählt, Null-Wert zulassen steht auf False und (Ist Identity) auf True, ID-Ausgangswert ist 1 und ID-Inkrement ebenfalls 1. Jetzt ist es in den letzten zwei Wochen schon zweimal vorgekommen, dass die ID's von Document und Entry einfach um 800-1000 Werte nach vorne springen und dann weiterzählen als wäre nichts gewesen.
Konkret habe ich bei Document einen Sprung von 468 auf 1446 und von 1503 auf 2501, bei Entry geht es zur gleichen Zeit von 5129 auf 5840 und von 6502 auf 7464. Der PC auf dem der Server läuft ist durchgängig eingeschaltet, ich bin mir nicht sicher, aber ich glaube, dass an den 2 Tagen der Pc sich aufgrund von Updates neugestartet hat.
Aber ein Neustart sollte doch nicht einfach die IDs springen lassen oder? Rückgängig machen lässt sich der Sprung übrigens nicht. Wenn ich alle Datensätze nach dem Sprung lösche wird trotzdem unverändert weitergezählt.
Die Funktionalität ist dadurch bisher nicht beeinträchtigt, aber sollten sich die Sprünge plötzlich häufen könnten mir irgendwann einfach die Zahlen ausgehen. Daher wüsste ich gerne wieso es zu diesen Sprüngen kommt und wie ich die verhindern kann.
ich habe ein recht eigenartiges Problem. Mit folgendem Befehl schicke ich Daten an einen SQL-Server:
VB.NET-Quellcode
- sqlCom = New SqlCommand("INSERT INTO Document(DDate,ID_Cat,Comment,Author,Checkstate4,Shift,KW)" & "VALUES(@date,@iD_Cat,@comment,@author,@checkstate4,@shift,@kw)")
- sqlCom.Connection = conn
- With sqlCom.Parameters
- .AddWithValue("date", DateTime.Now.Date)
- .AddWithValue("iD_Cat", CInt(CategoryComboBox.SelectedValue))
- If Not RTBComment.Text = Nothing Then .AddWithValue("comment", RTBComment.Text) Else .AddWithValue("comment", "")
- If Not TBName.Text = Nothing Then .AddWithValue("author", TBName.Text) Else .AddWithValue("author", "")
- If CheckBoxCancel.Checked Then .AddWithValue("checkstate4", 3) Else .AddWithValue("checkstate4", WorstCase)
- If ComboBoxShift.Text = "Frühschicht" Then
- .AddWithValue("shift", 0)
- ElseIf ComboBoxShift.Text = "Spätschicht" Then
- .AddWithValue("shift", 1)
- Else
- .AddWithValue("shift", 2)
- End If
- .AddWithValue("kw", DateTimeFormatInfo.CurrentInfo.Calendar.GetWeekOfYear(DateTime.Now, DateTimeFormatInfo.CurrentInfo.CalendarWeekRule, DayOfWeek.Monday))
- End With
- sqlCom.ExecuteNonQuery()
- If CheckBoxCancel.Checked = False Then
- For Each tc As TripleCheck In FLPTripleCheck.Controls
- Dim SqlEntryCommand As SqlCommand = New SqlCommand("INSERT INTO Entry(ID_Doc,ID_Checkpoint,Checkstate3)" & "VALUES(@id_Doc,@iD_Checkpoint,@checkstate3)")
- SqlEntryCommand.Connection = conn
- With SqlEntryCommand.Parameters
- .AddWithValue("id_Doc", IDDoc)
- .AddWithValue("id_Checkpoint", tc.description_ID)
- If CheckBoxAllesIO.Checked Then .AddWithValue("checkstate3", 0) Else .AddWithValue("checkstate3", tc.triplestatecheck)
- End With
- SqlEntryCommand.ExecuteNonQuery()
- Next
- End If
Eigentlich sollte sich die ID immer um genau einen Wert erhöhen, falls ein neuer Eintrag erstellt wird. Die ID ist als Primärschlüssel ausgewählt, Null-Wert zulassen steht auf False und (Ist Identity) auf True, ID-Ausgangswert ist 1 und ID-Inkrement ebenfalls 1. Jetzt ist es in den letzten zwei Wochen schon zweimal vorgekommen, dass die ID's von Document und Entry einfach um 800-1000 Werte nach vorne springen und dann weiterzählen als wäre nichts gewesen.
Konkret habe ich bei Document einen Sprung von 468 auf 1446 und von 1503 auf 2501, bei Entry geht es zur gleichen Zeit von 5129 auf 5840 und von 6502 auf 7464. Der PC auf dem der Server läuft ist durchgängig eingeschaltet, ich bin mir nicht sicher, aber ich glaube, dass an den 2 Tagen der Pc sich aufgrund von Updates neugestartet hat.
Aber ein Neustart sollte doch nicht einfach die IDs springen lassen oder? Rückgängig machen lässt sich der Sprung übrigens nicht. Wenn ich alle Datensätze nach dem Sprung lösche wird trotzdem unverändert weitergezählt.
Die Funktionalität ist dadurch bisher nicht beeinträchtigt, aber sollten sich die Sprünge plötzlich häufen könnten mir irgendwann einfach die Zahlen ausgehen. Daher wüsste ich gerne wieso es zu diesen Sprüngen kommt und wie ich die verhindern kann.
Option strict = on
If it's stupid and it works it ain't stupid.
If it's stupid and it works it ain't stupid.