27 votes

Limite supérieure pour la clé primaire d'auto-incrémentation dans SQL Server

Quelle est la limite supérieure d'une clé primaire à incrémentation automatique dans SQL Server? Que se passe-t-il lorsqu'une clé primaire d'auto-incrémentation SQL Server atteint sa limite supérieure?

31voto

CubanX Points 3603

Joel réponse est bonne, c'est la limite supérieure de ce type de données que vous utilisez.

Voici un exemple de deux d'entre eux:

  • int: 2^31-1 (de 2 147 483 647)
  • bigint: 2^63-1 (9,223,372,036,854,775,807)

En fait, j'ai frappé à la limite à un emploi, j'ai travaillé à. L'erreur est:

 Msg 8115, Niveau 16, État 1, Ligne 1
 Erreur de dépassement arithmétique conversion d'IDENTITÉ pour le type de données int.
 Dépassement de capacité arithmétique s'est produite.

Il y a quelques corrections à ce que je peux penser à du haut de ma tête. Le numéro 1 est probablement très difficile et pas très probable, le nombre 2 est facile, mais sera probablement causer des problèmes dans votre base de code.

  1. Si la colonne d'identité n'est pas question pour vous (ce n'est pas une Clé Étrangère, etc.) ensuite, vous pouvez simplement effectuer un réamorçage de la base de données et réinitialisation de la colonne d'identité.
  2. Changer votre colonne d'identité à un plus grand nombre. Ainsi, par exemple, si vous avez débordé un int, changer votre colonne d'identité d'un grand int. Bonne chance débordante qu' :)

Il y a probablement d'autres corrections, mais il n'y a pas de solution miracle facile. J'espère juste que cela ne se produise pas dans un tableau qui est le centre d'un tas de relations, parce que si c'est le cas, vous êtes dans beaucoup de douleur. Il n'est pas difficile de résoudre, juste une tâche fastidieuse et longue.

3voto

Joel Coehoorn Points 190579

Cela dépend du type de données. Si vous utilisez bigint, il est peu probable que vous débordiez. Même un entier normal vous donne quelques milliards de lignes. Je n'ai jamais débordé, donc je ne peux pas vous dire ce qui se passe si vous le faites.

0voto

Fred Points 2016

Description des types de données:

 BIGINT    Integer data from -2^63 through 2^63 - 1

INT       Integer data from -2^31 through 2^31 - 1

SMALLINT  Integer data from -2^15 through 2^15 - 1

TINYINT   Integer data from 0     through 255
 

Lorsque vous atteignez la limite supérieure, l'auto-incrémentation passe à la limite inférieure.

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