Udostępnij za pośrednictwem


DBCC CHECKIDENT (Transact-SQL)

Sprawdza, czy bieżąca wartość tożsamości dla określonej tabela w SQL Server 2008 R2 i jeśli to konieczne, zmiany wartości tożsamości.Można również użyć DBCC CHECKIDENT ręcznie zestaw nową wartość bieżącą tożsamość kolumnatożsamości.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

DBCC CHECKIDENT 
 ( 
    table_name
        [, { NORESEED | { RESEED [, new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]

Argumenty

  • table_name
    Jest nazwą tabela , dla którego należy sprawdzić bieżącą wartość tożsamości.tabela określonej musi zawierać kolumna.Nazwy tabel muszą być zgodne z zasadami identyfikatorów.

  • NORESEED
    Określa, że wartość bieżąca tożsamość nie powinny być zmieniane.

  • RESEED
    Określa bieżącą wartość tożsamości powinny zostać zmienione.

  • new_reseed_value
    Jest nową wartość jako bieżącą wartość kolumnatożsamości.

  • Z NO_INFOMSGS
    Pomija wszystkie komunikaty informacyjne.

Uwagi

Określonych poprawek wprowadzonych wartości bieżącej tożsamości zależy od specyfikacji parametru.

Polecenie DBCC CHECKIDENT

Korekta tożsamości lub korekty dokonane

DBCC CHECKIDENT ( table_name, NORESEED)

Bieżąca wartość tożsamości nie jest resetowany.DBCC CHECKIDENT zwraca wartość bieżącą tożsamość i bieżącą maksymalną wartość kolumnatożsamości.Jeśli dwie wartości nie są takie same, należy zresetować wartość tożsamości w celu uniknięcia potencjalnych błędów lub przerwy w sekwencji wartości.

DBCC CHECKIDENT ( table_name )

lub

DBCC CHECKIDENT ( table_name, RESEED)

Jeżeli bieżąca wartość tożsamości w tabela jest mniejsza niż wartość maksymalna tożsamości, przechowywane w kolumnatożsamości, jest resetowany przy użyciu maksymalnej wartości w kolumnatożsamości.W sekcji Wyjątki poniżej.

DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )

Bieżąca tożsamość wartość jest zestaw na new_reseed_value.Jeśli żadne wiersze zostały wstawione do tabela od czasu utworzenia tabela lub jeśli usunięto wszystkie wiersze przy użyciu OBCIĄĆ tabelę instrukcjaużywa pierwszego wiersza dodaje się po uruchomieniu DBCC CHECKIDENT new_reseed_value jako tożsamość.W przeciwnym razie używa następnego wiersza dodaje się new_reseed_value + przyrost bieżącego wartości.

Jeśli tabela nie jest pusta, ustawienie wartości tożsamości liczbę mniejszą niż maksymalna wartość kolumna tożsamości może spowodować w jednym z następujących warunków:

  • Jeśli istnieje ograniczenie na klucz podstawowy lub unikatowe na kolumnatożsamości, komunikat o błędzie 2627 będzie generowany na operacje wstawiania do tabela , ponieważ wartość wygenerowanych tożsamości spowoduje konflikt z istniejących wartości.

  • Jeśli nie istnieje ograniczenie na klucz podstawowy lub unikatowe, operacje wstawiania spowoduje tożsamości zduplikowanych wartości.

Wyjątki

W poniższej tabela Wyświetla warunki, gdy DBCC CHECKIDENT nie automatycznie resetuje bieżącą wartość tożsamości i zawiera metody resetowania wartości.

Warunek

Resetuj metod

Bieżąca wartość tożsamości jest większa niż maksymalna wartość w tabela.

  • Wykonanie DBCC CHECKIDENT (table_name, NORESEED), aby określić bieżącą maksymalną wartość w kolumna, a następnie określ tę wartość jako new_reseed_value w DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) polecenia.

lub

  • Wykonanie DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) z new_reseed_value zestaw bardzo niskie wartości, a następnie uruchom DBCC CHECKIDENT (table_name, RESEED) aby poprawić wartość.

Wszystkie wiersze są usuwane z tabela.

Wykonanie DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) z new_reseed_valueUruchamianiezestaw żądane wartości.

Zmiana wartości materiału siewnego

Wartość początkową jest wartość wstawiona do kolumna tożsamości dla pierwszego wiersza ładowane do tabela.Wszystkie pozostałe wiersze zawierają wartości bieżącej tożsamości powiększonej o wartość przyrostu, gdzie wartość bieżącą tożsamość jest ostatnia wartość tożsamości generowane dla tabela lub widoku.Aby uzyskać więcej informacji, zobacz Tworzenie i modyfikowanie kolumn identyfikatora.

DBCC CHECKIDENT nie można używać do wykonywania następujących zadań:

  • Zmień oryginalna wartość materiału siewnego, który został określony dla kolumna podczas tworzenia tabela lub widoku.

  • Reseed istniejących wierszy w tabela lub widoku.

Aby zmienić wartość oryginalnego materiału siewnego i reseed istniejące wiersze, musi usunąć tożsamości kolumna i ponowne utworzenie określając nową wartość materiału siewnego.W tabela zawierającej dane, numery tożsamości są dodawane do istniejących wierszy z określonego materiału siewnego i wartości przyrostu.Kolejność, w którym wiersze są aktualizowane nie jest gwarantowane.

Zestawy wyników

Czy opcje określone dla tabela , która zawiera tożsamości kolumna, zwraca DBCC CHECKIDENT (wartości mogą być różne):

Checking identity information: current identity value '290', current column value '290'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Uprawnienia

Obiekt wywołujący musi własnej tabelalub element członkowski sysadmin stała rola serwera db_owner stałej rola bazy danychlub db_ddladmin stałej rola bazy danych.

Przykłady

A.Resetowanie wartości bieżącej tożsamości, jeśli jest potrzebny

Poniższy przykład resetuje bieżącą wartość tożsamość, jeśli jest konieczne, z AddressType tabela w AdventureWorks2008R2 bazy danych.

USE AdventureWorks2008R2;
GO
DBCC CHECKIDENT ("Person.AddressType");
GO

B.Raportowanie wartości bieżącej tożsamości

Poniższy przykład raportuje wartości bieżącej tożsamości w AddressType tabela w AdventureWorks2008R2 bazę danych, a nie poprawia wartość tożsamości, jeśli jest niepoprawny.

USE AdventureWorks2008R2;
GO
DBCC CHECKIDENT ("Person.AddressType", NORESEED);
GO

C.Wymuszanie wartości bieżącej tożsamości na nową wartość

Poniższy przykład wymusza wartości bieżącej tożsamości w AddressTypeID kolumna w AddressType tabela wartość 10.Ponieważ tabela zawiera istniejące wiersze, następny wiersz wstawiony jako wartość, oznacza to, że wartość bieżąca tożsamość plus 1 bieżącą wartość przyrostu zdefiniowana dla kolumnazostanie użyty 11.

USE AdventureWorks2008R2;
GO
DBCC CHECKIDENT ("Person.AddressType", RESEED, 10);
GO