130 votes

Incrément d'identité de colonne SQL Server 2012 passant de 6 à 1 000+ à la 7e entrée

J'ai un scénario étrange dans lequel la colonne auto identity int de ma base de données SQL Server 2012 ne s'incrémente pas correctement.

Supposons que j'ai une table qui utilise une identité automatique int en tant que clé primaire. Elle saute sporadiquement des incréments, par exemple:

1, 2, 3, 4, 5, 1004, 1005

Cela se produit sur un nombre aléatoire de tables à des moments très aléatoires, vous ne pouvez pas le reproduire pour trouver des tendances.

Comment ça se passe? Y a-t-il un moyen de le faire arrêter?

80voto

Mithrandir Points 10545

Tout ceci est parfaitement normal. Microsoft a ajouté sequences dans SQL Server 2012, enfin, je pourrais ajouter et changé la façon dont les clés de l'identité sont générés. Jetez un oeil ici pour une explication.

Si vous voulez avoir l'ancien comportement, vous pouvez:

  1. utiliser l'indicateur de trace 272 - ce qui va provoquer un enregistrement de journal doit être généré pour chaque produit de valeur d'identité. La représentation de l'identité de génération peut être influencée par l'activation de l'indicateur de trace.
  2. l'utilisation d'un générateur de séquence avec le paramètre de CACHE (http://msdn.microsoft.com/en-us/library/ff878091.aspx)

4voto

yoosha Points 56

Vous avez le même problème, trouvé le rapport de bogue suivant dans SQL Server 2012 Si toujours pertinent, consultez les conditions qui causent le problème - il existe également des solutions de contournement (je n'ai pas essayé). Le basculement ou le redémarrage entraîne une nouvelle identité

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X