Cliquez pour évaluer et commenter
TechNet
Bibliothèque TechNet
SQL Server
SQL Server 2008
Moteur de base de données
Références techniques
Guide de référence Transa...
DBCC (Transact-SQL)
 DBCC CHECKIDENT (Transact-SQL)
Contenu de la communauté
Dans cette section
Statistiques Annotations (0)
Réduire tout/Développer tout Réduire tout
D'autres versions sont également disponibles pour :
Documentation en ligne de SQL Server 2008 (juillet 2009)
DBCC CHECKIDENT (Transact-SQL)

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 une nouvelle valeur d'identité actuelle pour la colonne d'identité.

Icône Lien de rubrique Conventions de syntaxe de Transact-SQL

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

Nouvelle valeur à utiliser comme valeur actuelle de la colonne d'identité.

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.

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.

WITH NO_INFOMSGS

Supprime tous les messages d'information.

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.

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 renvoie 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 ligne suivante insérée utilise la valeur new_reseed_value + la valeur incrémentielle 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.

Modification de la valeur de départ

La valeur de départ est la valeur insérée dans une colonne d'identité pour la toute première ligne chargée dans la table. Tous les lignes suivantes contiennent la valeur d'identité actuelle à laquelle s'ajoute la valeur d'incrément (la valeur d'identité actuelle étant 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 qui a été spécifiée pour une colonne d'identité lors de la création de la table ou de la vue ;
  • attribuer une nouvelle valeur de départ à des lignes existantes d'une table ou d'une vue.

Pour remplacer la valeur de départ d'origine dans des 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'identité sont ajoutés aux lignes existantes avec les les valeurs de départ et d'incrément. L'ordre dans lequel les lignes sont mises à jour n'est pas garanti.

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

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.

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 Employee et ne corrige pas cette valeur si elle est incorrecte.

C. Attribution forcée d’une nouvelle valeur pour la valeur d’identité actuelle

L'exemple suivant impose la valeur 300 pour la valeur d'identité actuelle dans la colonne EmployeeID de la table Employee. Étant donné que la table contient déjà des lignes, la ligne suivante insérée utilise la valeur 301, autrement dit, valeur d’identité actuelle plus 1, la valeur d’incrément actuelle définie pour la colonne.

Contenu de la communauté   Qu'est-ce que le Contenu de la communauté ?
Ajouter du contenu RSS  Annotations
Processing
© 2009 Microsoft Corporation. Tous droits réservés. Conditions d'utilisation | Marques | Confidentialité
Page view tracker