W celu rozwiązania tego problemu należy użyć polecenia DBCC CHECKIDENT. Przykład skryptu przedstawionego poniżej:
DBCC CHECKIDENT ('dbo.Test’, NORESEED)
W odpowiedzi uzyskuje się komunikat:
Checking identity information: current identity value '9', current column value '9'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Komunikat ten nas informuje, że w tabeli dbo.Test aktualna wartość dla pola z właściwościa IDENTITY ustawiona jest na 9.
Jak zmienić wartość IDENTITY:
Należy użyć polecenia DBCC CHECKIDENT. Przykład skryptu przedstawionego poniżej:
DBCC CHECKIDENT ('dbo.Test’, RESEED,50) <code>--gdzie 50 to nowa wartość
W odpowiedzi uzyskuje się komunikat:
Checking identity information: current dentity value '9', current column value '50'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Uwaga:
1) Należy uważać, aby nie podać wartości już użytej, czyli mniejszej od istniejącego ustawionego IDENTITY, przykładowo:
DBCC CHECKIDENT ('dbo.TEST', RESEED,6) -- poprzednia wartość to 9
Skrypt zostanie wykonany bezbłędnie ale próba dodania nowego rekordu skutkuje błędem:
Msg 2627, Level 14, State 1, Line 1 Violation of PRIMARY KEY constraint 'PK_TEST'. Cannot insert duplicate key in object 'dbo.TEST'. The duplicate key value is (7). The statement has been terminated.
Oczywiście naprawiamy taka sytuacje ustawiając znów prawidłową wartość:
DBCC CHECKIDENT ('dbo.TEST', RESEED,9)
2) Użycie:
DBCC CHECKIDENT ('dbo.TEST', RESEED,50)
Lub
DBCC CHECKIDENT ('dbo.TEST', NORESEED)
Dla tabeli, która nie ma ustawionej właściwości IDENTITY spowoduje błąd:
Msg 7997, Level 16, State 1, Line 2 'TEST' does not contain an identity column.
Linki: