DBCC CHECKIDENT (Transact-SQL)
Consente di verificare il valore Identity corrente per la tabella specificata in SQL Server 2012 e, se necessario, di modificarlo. È 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
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. Vedere la sezione "Eccezioni" riportata di seguito. |
DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) |
Il valore Identity corrente viene impostato su 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.
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 messaggio seguente per tutte le operazioni tranne quando si specifica un nuovo valore di inizializzazione.
Checking identity information: current identity value '<current identity value>', current column value '<current column value>'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Quando DBCC CHECKIDENT viene utilizzato per specificare un nuovo valore di inizializzazione tramite new_reseed_value, viene restituito il messaggio seguente.
Checking identity information: current identity value '<current identity value>'. 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, della tabella specificata nel database AdventureWorks2012 .
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType');
GO
B.Visualizzazione del valore Identity corrente
Nell'esempio seguente viene visualizzato il valore Identity corrente della tabella specificata nel database AdventureWorks2012 e, se è errato, non viene corretto.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', NORESEED);
GO
C.Forzatura del valore Identity corrente su un nuovo valore
Nell'esempio seguente il valore Identity corrente della colonna AddressTypeID nella tabella AddressType viene impostato su 10. Poiché nella tabella sono presenti righe, la successiva riga inserita utilizzerà il valore 11, ovvero il nuovo valore dell'incremento corrente definito per il valore della colonna più 1.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO
Vedere anche
Riferimento
IDENTITY (proprietà) (Transact-SQL)