DBCC CHECKIDENT (Transact-SQL)

Mis à jour : 17 novembre 2008

Vérifie la valeur d'identité courante pour la table spécifiée et, si nécessaire, modifie cette valeur. Vous pouvez également utiliser DBCC CHECKIDENT pour définir manuellement la nouvelle valeur d'identité actuelle de la colonne d'identité.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

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

Arguments

  • table_name
    Nom de la table pour laquelle la valeur d'identité courante est vérifiée. La table spécifiée doit posséder une colonne d'identité. Les noms des tables doivent respecter les conventions applicables aux identificateurs.
  • NORESEED
    Spécifie que la valeur d'identité courante ne doit pas être modifiée.
  • RESEED
    Spécifie que la valeur d'identité courante doit être modifiée.
  • new_reseed_value
    Nouvelle valeur à utiliser comme valeur actuelle de la colonne d'identité.
  • WITH NO_INFOMSGS
    Supprime tous les messages d'information.

Jeux de résultats

Que certaines options soient spécifiées ou non pour une table contenant une colonne d'identité, la commande DBCC CHECKIDENT retourne des valeurs (celles-ci peuvent varier) :

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

Modification de la valeur de départ

La valeur de départ correspond à la valeur insérée dans une colonne d'identité pour la toute première ligne chargée dans la table. Toutes les lignes suivantes contiennent la valeur d'identité actuelle plus la valeur d'incrément où la valeur d'identité actuelle désigne la dernière valeur d'identité générée pour la table ou la vue. Pour plus d'informations, consultez Création et modification de colonnes d'identification.

Vous ne pouvez pas utiliser DBCC CHECKIDENT pour effectuer les tâches suivantes :

  • Modifier la valeur de départ d'origine spécifiée pour une colonne d'identité lors de la création de la table ou de la vue.
  • Réattribuer la valeur de départ de lignes existantes dans une table ou une vue.

Pour modifier la valeur de départ d'origine et réattribuer la valeur de départ de lignes existantes, vous devez supprimer la colonne d'identité et la recréer en spécifiant la nouvelle valeur de départ. Lorsque la table contient des données, les numéros d'identification sont ajoutés aux lignes existantes avec les valeurs de départ et d'incrément spécifiées. L'ordre dans lequel les lignes sont mises à jour n'est pas garanti.

Notes

Les corrections spécifiques effectuées sur la valeur d'identité courante dépendent des spécifications de paramètres.

Commande DBCC CHECKIDENT Correction(s) d'identité effectuée(s)

DBCC CHECKIDENT ( table_name, NORESEED )

La valeur d'identité courante n'est pas redéfinie. DBCC CHECKIDENT retourne la valeur d'identité actuelle et la valeur maximale actuelle de la colonne d'identité. Si les deux valeurs diffèrent, vous devez redéfinir la valeur d'identité afin d'éviter les erreurs ou écarts potentiels dans la séquence de valeurs.

DBCC CHECKIDENT ( table_name )

ou

DBCC CHECKIDENT ( table_name, RESEED )

Si la valeur d'identité courante pour une table est inférieure à la valeur d'identité maximale stockée dans la colonne d'identité, elle est redéfinie à l'aide de cette valeur maximale dans la colonne d'identité.

DBCC CHECKIDENT ( table_name, RESEED,new_reseed_value )

La valeur d'identité actuelle est définie comme new_reseed_value. Si aucune ligne n'a été insérée dans la table depuis sa création ou si toutes les lignes ont été supprimées à l'aide de l'instruction TRUNCATE TABLE, la première ligne insérée après l'exécution de DBCC CHECKIDENT utilise new_reseed_value comme valeur d'identité. Dans le cas contraire, la prochaine ligne insérée utilise la valeur new_reseed_value + la valeur d'incrément actuelle.

Si la table n'est pas vide, le fait d'attribuer à la valeur d'identité un nombre inférieur à la valeur maximale dans la colonne d'identité peut aboutir à l'une des situations suivantes :

  • Si une contrainte PRIMARY KEY ou UNIQUE existe sur la colonne d'identité, les opérations d'insertion ultérieures dans la table déclenchent le message d'erreur 2627 car la valeur d'identité générée entre en conflit avec les valeurs existantes.
  • Si aucune contrainte PRIMARY KEY ou UNIQUE n'existe, les opérations d'insertion ultérieures aboutissent à des valeurs d'identité dupliquées.

Exceptions

Le tableau suivant répertorie les conditions dans lesquelles DBCC CHECKIDENT ne redéfinit pas automatiquement la valeur d'identité actuelle et indique comment redéfinir celle-ci.

Condition Méthodes de redéfinition

La valeur d'identité actuelle est supérieure à la valeur maximale de la table.

  • Exécutez DBCC CHECKIDENT (table_name, NORESEED) pour déterminer la valeur maximale actuelle de la colonne, puis spécifiez cette valeur comme new_reseed_value dans une commande DBCC CHECKIDENT (table_name, RESEED,new_reseed_value).

ou

  • Exécutez DBCC CHECKIDENT (table_name, RESEED,new_reseed_value) avec la valeur new_reseed_value définie à un niveau très bas, puis exécutez la commande DBCC CHECKIDENT (table_name, RESEED) pour corriger la valeur.

Toutes les lignes sont supprimées de la table.

Exécutez DBCC CHECKIDENT (table_name, RESEED,new_reseed_value) en attribuant à new_reseed_value la valeur de départ souhaitée.

Autorisations

L'appelant doit être propriétaire de la table ou être membre du rôle serveur fixe sysadmin, du rôle de base de données fixe db_owner ou du rôle de base de données fixe db_ddladmin.

Exemples

A. Redéfinition de la valeur d'identité courante, si nécessaire

Le cas échéant, l'exemple suivant redéfinit la valeur d'identité courante pour la table Employee dans la base de données AdventureWorks.

USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee");
GO

B. Présentation de la valeur d'identité courante

L'exemple suivant signale la valeur d'identité courante de la table Employee dans la base de données AdventureWorks et ne corrige pas cette valeur si elle est incorrecte.

USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", NORESEED);
GO

C. Imposition de la valeur d'identité courante sur 30

L'exemple force la valeur d'identité actuelle figurant dans la colonne EmployeeID de la table Employee à prendre la valeur 300. Comme la table possède déjà des lignes, la prochaine ligne insérée aura la valeur 301, à savoir la valeur d'identité actuelle plus 1 (la valeur d'incrément actuelle définie pour la colonne).

USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 30);
GO

Voir aussi

Référence

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC (Transact-SQL)
IDENTITY (Propriété) (Transact-SQL)
USE (Transact-SQL)

Autres ressources

Réplication de colonnes d'identité

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

17 novembre 2008

Contenu modifié :
  • Correction de la définition de new_reseed_value..
  • Ajout d'une section de remarques sur la modification de la valeur de départ.

14 avril 2006

Nouveau contenu :
  • Ajout de texte sur les résultats de l'attribution à une valeur d'identité d'un nombre inférieur à la valeur maximale de la colonne d'identité.
  • Dans la section Exceptions, ajout de texte relatif au cas où toutes les lignes sont supprimées de la table.

5 décembre 2005

Nouveau contenu :
  • La description de l'argument new_reseed_value est plus détaillée.