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é.
Conventions 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 :
|
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. |
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 |
|
14 avril 2006 |
|
5 décembre 2005 |
|