Maison >base de données >tutoriel mysql >Pourquoi ma colonne d'identité SQL Server 2012 ignore-t-elle les incréments ?

Pourquoi ma colonne d'identité SQL Server 2012 ignore-t-elle les incréments ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-18 02:52:09594parcourir

Why Does My SQL Server 2012 Identity Column Skip Increments?

Saut d'incrément de colonne d'identité SQL Server 2012 : un problème courant

Les colonnes d'identité à incrémentation automatique de SQL Server 2012 peuvent présenter un comportement inattendu : saut sporadique d'incréments. Cela perturbe la numérotation séquentielle des enregistrements, provoquant des lacunes dans les valeurs d'identification de votre table.

Ce problème découle de l'introduction des séquences dans SQL Server 2012. Les séquences améliorent les performances et l'évolutivité de la génération d'identité, mais cette amélioration peut conduire à l'omission apparente des incréments.

Comprendre le saut apparent

Lorsqu'une séquence gère une colonne d'identité, elle pré-attribue une plage de numéros. Les nouveaux enregistrements reçoivent des valeurs de cette plage. Si la plage allouée dépasse le besoin immédiat, cela crée l'illusion de nombres sautés, même si la séquence sous-jacente fonctionne correctement.

Solutions pour maintenir des incréments séquentiels

Pour retrouver le comportement d'incrémentation strictement séquentiel des anciennes versions de SQL Server, envisagez ces options :

  1. Drapeau de trace 272 : L'activation de l'indicateur de trace 272 enregistre chaque génération de valeur d'identité. Cela garantit des identifiants séquentiels mais peut réduire légèrement les performances.
  2. Séquence NO CACHE : Définissez votre séquence avec l'option NO CACHE. Cela empêche la pré-attribution de grandes plages de numéros, garantissant une attribution séquentielle.

En résumé

Le saut perçu des incréments de colonne d'identité dans SQL Server 2012 est un sous-produit de l'optimisation de séquence. En comprenant ce mécanisme et en utilisant les solutions suggérées, vous pouvez conserver les ID séquentiels sans sacrifier les avantages en termes de performances des séquences.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn