DBCC CHECKIDENT (Transact-SQL)
Verifica il valore Identity corrente per la tabella specificata e, se necessario, lo modifica. È inoltre possibile utilizzare DBCC CHECKIDENT per impostare manualmente un nuovo valore Identity corrente per la colonna Identity.
Sintassi
DBCC CHECKIDENT
(
table_name
[ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
Argomenti
table_name
Nome della tabella di cui verificare il valore Identity corrente. La tabella specificata deve includere una colonna Identity. I nomi delle tabelle devono essere conformi alle regole per gli identificatori.NORESEED
Specifica che non è necessario modificare il valore Identity corrente.RESEED
Specifica che è necessario modificare il valore Identity corrente.new_reseed_value
Nuovo valore da utilizzare come valore corrente della colonna Identity.WITH NO_INFOMSGS
Disattiva tutti i messaggi informativi.
Osservazioni
Le correzioni specifiche apportate al valore Identity corrente dipendono dalle specifiche di parametro.
Comando DBCC CHECKIDENT |
Correzione o correzioni Identity apportate |
---|---|
DBCC CHECKIDENT ( table_name, NORESEED ) |
Il valore Identity corrente non viene reimpostato. DBCC CHECKIDENT restituisce il valore Identity corrente e il valore massimo corrente della colonna Identity. Se i due valori non corrispondono, è consigliabile reimpostare il valore Identity per evitare potenziali errori o gap nella sequenza dei valori. |
DBCC CHECKIDENT (table_name) o DBCC CHECKIDENT ( table_name, RESEED ) |
Se il valore Identity corrente di una tabella è inferiore al valore Identity massimo archiviato nella colonna Identity, questo viene reimpostato in base al valore massimo della colonna Identity. |
DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) |
Il valore Identity corrente viene impostato come new_reseed_value. Se dopo la creazione della tabella non è stata inserita alcuna riga o se tutte le righe sono state rimosse mediante l'istruzione TRUNCATE TABLE, per la prima riga inserita dopo l'esecuzione di DBCC CHECKIDENT viene utilizzato il valore new_reseed_value come valore Identity. In caso contrario, per la successiva riga inserita viene utilizzato il valore new_reseed_value + il valore di incremento corrente. Se la tabella non è vuota, l'impostazione del valore Identity su un numero inferiore al valore massimo della colonna Identity può determinare una delle condizioni seguenti:
|
Eccezioni
Nella tabella seguente vengono elencate le condizioni in cui DBCC CHECKIDENT non reimposta automaticamente il valore Identity corrente e vengono specificati i metodi per la reimpostazione del valore.
Condizione |
Metodi di reimpostazione |
---|---|
Il valore Identity corrente è maggiore del valore massimo della tabella. |
o
|
Tutte le righe sono state eliminate dalla tabella. |
Eseguire DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) con new_reseed_value impostato sul valore iniziale desiderato. |
Modifica del valore di inizializzazione
Il valore di inizializzazione è il valore inserito in una colonna Identity per la prima riga caricata nella tabella. Tutte le righe successive contengono il valore Identity corrente più il valore dell'incremento dove il valore Identity corrente è l'ultimo valore Identity generato per la tabella o vista. Per ulteriori informazioni, vedere Creazione e modifica di colonne identificatore.
Non è possibile utilizzare DBCC CHECKIDENT per eseguire le attività seguenti:
Modificare il valore di inizializzazione originale specificato per una colonna Identity al momento della creazione della tabella o vista.
Reinizializzare righe esistenti in una tabella o vista.
Per modificare il valore di inizializzazione originale e reinizializzare le eventuali righe esistenti, è necessario eliminare la colonna Identity e ricrearla specificando il nuovo valore di inizializzazione. Quando la tabella contiene dati, i numeri di identità vengono aggiunti alle righe esistenti con i valori di inizializzazione e incremento specificati. L'ordine con cui le righe vengono aggiornate non è prevedibile.
Set di risultati
Indipendentemente dalla specifica delle opzioni per una tabella che include una colonna Identity, DBCC CHECKIDENT restituisce il set di risultati seguente (i valori possono variare):
Checking identity information: current identity value '290', current column value '290'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Autorizzazioni
Il chiamante deve essere proprietario della tabella o membro del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner e db_ddladmin.
Esempi
A. Reimpostazione del valore Identity corrente, se necessario
Nell'esempio seguente viene reimpostato il valore Identity corrente, se necessario, per la tabella Employee nel database AdventureWorks.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee");
GO
B. Visualizzazione del valore Identity corrente
Nell'esempio seguente viene visualizzato il valore Identity della tabella Employee nel database AdventureWorks e, se è errato, non viene corretto.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", NORESEED);
GO
C. Imposizione del valore Identity corrente su un nuovo valore
Nell'esempio seguente il valore Identity corrente viene della colonna EmployeeID nella tabella Employee viene impostato su 300. Poiché nella tabella sono presenti righe, la successiva riga inserita utilizzerà il valore 301, ovvero il valore Identity corrente più 1, che rappresenta il valore dell'incremento corrente definito per la colonna.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 300);
GO