Comprendre le comportement de la colonne d'identité de SQL Server lors des restaurations
Les colonnes d'identité à incrémentation automatique de SQL Server présentent une caractéristique unique : elles continuent de s'incrémenter même après une restauration de transaction. Cela peut entraîner des lacunes dans la séquence d'identité, un problème potentiel dans des applications spécifiques.
Lorsqu'une instruction INSERT
dans une transaction échoue et que la transaction est annulée, les lignes insérées sont supprimées. Cependant, la valeur d'identité attribuée avant la restauration reste inchangée. Cela conduit à des valeurs d'identité inutilisées, créant des lacunes ou pouvant causer des problèmes si vous tentez de réutiliser ces valeurs.
Cette nature non transactionnelle des colonnes d'identité est intentionnelle. Dans un environnement multi-utilisateurs, rendre l'attribution d'identité transactionnelle entraînerait une surcharge de performances et des goulots d'étranglement importants, car cela nécessiterait des mécanismes de verrouillage pour empêcher l'accès simultané et l'attribution de la même valeur d'identité.
Par conséquent, récupérer les valeurs d'identité « perdues » après une restauration n'est pas possible.
Pour atténuer les lacunes en matière d'identité, envisagez des approches alternatives pour générer des identifiants uniques, notamment :
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!