DBCC CHECKIDENT (Transact-SQL)
Vérifie la valeur d'identité actuelle pour la table spécifiée dans SQL Server 2008 R2 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é.
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.
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 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é actuelle 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é. Consultez la section Exceptions qui suit. |
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 :
|
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. |
ou
|
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.
Ensembles 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.
Autorisations
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.
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é actuelle pour la table AddressType dans la base de données AdventureWorks2008R2.
USE AdventureWorks2008R2;
GO
DBCC CHECKIDENT ("Person.AddressType");
GO
B. Présentation de la valeur d'identité courante
L'exemple suivant signale la valeur d'identité actuelle de la table AddressType dans la base de données AdventureWorks2008R2 et ne corrige pas cette valeur si elle est incorrecte.
USE AdventureWorks2008R2;
GO
DBCC CHECKIDENT ("Person.AddressType", NORESEED);
GO
C. Attribution forcée d’une nouvelle valeur pour la valeur d’identité actuelle
L'exemple suivant impose la valeur 10 pour la valeur d'identité actuelle dans la colonne AddressTypeID de la table AddressType. Étant donné que la table contient déjà des lignes, la ligne suivante insérée utilise la valeur 11, autrement dit, valeur d'identité actuelle plus 1, la valeur d'incrément actuelle définie pour la colonne.
USE AdventureWorks2008R2;
GO
DBCC CHECKIDENT ("Person.AddressType", RESEED, 10);
GO