8
votes

Colonnes d'identité de réseel sur la base de données

Puis-je utiliser la commande

DBCC CHECKIDENT(<table_name>, RESEED, value)


1 commentaires

En fait, il y a trois questions ici. Je suis sûr que vous pouvez les voir ... Si vous avez besoin d'une explication plus poussée, demandez simplement une question


3 Réponses :


8
votes

Puis-je utiliser la commande DBCC Checkident pour réinitialiser une valeur de courant d'identité à l'original sur SQL Server 2008?

oui.

Si oui, est-ce la bonne façon de faire cette opération sans avoir d'inconvénient?

C'est la seule façon documentée de le faire.

inconvénients possibles: vous pouvez finir par obtenir des valeurs identité - il n'y a aucune garantie de SQL Server qu'il ne donnerait pas de valeur qui n'est pas déjà utilisée.

E.g. Si votre adresse est actuellement de 100, et que vous le réinitialisez à 1, les chances sont plus tôt ou ultérieures, il produira une valeur déjà utilisée.

L'identité comme implémenté dans SQL Server ne vérifie pas les valeurs existantes ou quoi que ce soit - il produit des numéros séquentiels. C'est à vous de décider - surtout si vous avez fait un reseed sur ce identité pour vous assurer que les valeurs ne sont pas dupliquées.


0 commentaires

10
votes

La valeur peut être omise. Donc, si vous utilisez

DBCC CHECKIDENT (<table_name>, RESEED);


1 commentaires

Par exemple: Définition de votre identité pour commencer à 2000: DBCC Checkident (, Reseat, 2000)



-1
votes

Il a un excellent inconvénient si et uniquement si la fièvre est une clé primaire et une référence à toute clé étrangère de tout autre tableau. ReSEEDING aide à rechercher des enregistrements dans la table des transactions ayant des index sur le terrain.


1 commentaires

la réponse n'a aucun sens.