DBCC CHECKIDENT (Transact-SQL)
Data aggiornamento: 17 novembre 2008
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.
Convenzioni della sintassi Transact-SQL
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
Valore da utilizzare come valore corrente della colonna Identity.
- WITH NO_INFOMSGS
Disattiva tutti i messaggi informativi.
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.
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 con il valore di incremento dove il valore Identity corrente è l'ultimo valore Identity generato per la tabella o la vista. Per ulteriori informazioni, vedere Creazione e modifica di colonne identificatore.
È possibile utilizzare DBCC CHECKIDENT per eseguire le attività seguenti:
- Modificare il valore di inizializzazione originale che è stato specificato per una colonna Identity quando è stata creata la tabella o la vista.
- Inizializzare nuovamente le righe esistenti in una tabella o in una vista.
Per modificare il valore di inizializzazione originale e inizializzare nuovamente le righe esistenti, è necessario eliminare e ricreare la colonna Identity specificando il nuovo valore di inizializzazione. Quando la tabella contiene dati, alle righe esistenti vengono aggiunti valori Identity con i valori di inizializzazione e di incremento specificati. L'ordine in cui vengono aggiornate le righe non è garantito.
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 ) Oppure 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 sono state rimosse tutte le righe tramite 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. |
Oppure
|
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. |
Autorizzazioni
Il chiamante deve essere proprietario della tabella o membro del ruolo predefinito del server sysadmin o dei ruoli predefiniti 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 di un valore Identity 30
Nell'esempio seguente, viene impostato 300 quale valore Identity corrente nella colonna EmployeeID
della tabella Employee
. Dal momento che la tabella già contiene righe, la successiva riga inserita avrà il valore 301, ossia il valore Identity corrente incrementato di 1, il valore di incremento definito per la colonna.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 30);
GO
Vedere anche
Riferimento
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC (Transact-SQL)
IDENTITY (proprietà) (Transact-SQL)
USE (Transact-SQL)
Altre risorse
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
17 novembre 2008 |
|
14 aprile 2006 |
|
5 dicembre 2005 |
|