Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

BIGint int pour identity

1 réponse
Avatar
GOLD
Bonsoir,
Je dois faire migrer une grosse application de gestion.
Après conversion de la base access vers sql server, j'ai retrouvé les index
primaires déclarés selon le type de données INT
La plupart du temps j'ai du activer l'identité (spécification du compteur).
Le fonctionnement de l'application a fonctionné correctement sans trop de
bug...
Mais après un certain temps j'ai reçu des messages d'erreur de la part du
serveur en particulier lors d'instructions INSERT

(0 ligne(s) affectée(s))

Msg 8115, Niveau 16, État 1, Procédure sp_sql_copy_marché_for_client, Ligne
18

Une erreur de dépassement arithmétique s'est produite lors de la conversion
de IDENTITY en type de données int.

Débordement arithmétique.





Donc j'ai modifié le type en BIGint.



La question est donc celle-ci: Dois-je transformer tous mes index de la
sorte ? Pourquoi l'assistant ne l'a pas fait lui-même dès le départ ?

merci d'avnce Cordialement Jacques

1 réponse

Avatar
zoltix
On 9 jan, 21:16, "GOLD" wrote:
Bonsoir,
Je dois faire migrer une grosse application de gestion.
Après conversion de la base access vers sql server, j'ai retrouvé les index
primaires déclarés selon le type de données INT
La plupart du temps j'ai du activer l'identité  (spécification du c ompteur).
Le fonctionnement de l'application a fonctionné correctement sans trop de
bug...
Mais après un certain temps j'ai reçu des messages d'erreur de la par t du
serveur en particulier lors d'instructions INSERT

(0 ligne(s) affectée(s))

Msg 8115, Niveau 16, État 1, Procédure sp_sql_copy_marché_for_clien t, Ligne
18

Une erreur de dépassement arithmétique s'est produite lors de la conv ersion
de IDENTITY en type de données int.

Débordement arithmétique.

  Donc j'ai modifié le type en BIGint.

La question est donc celle-ci: Dois-je transformer tous mes index de la
sorte ? Pourquoi l'assistant ne l'a pas fait lui-même dès le départ ?

merci d'avnce   Cordialement  Jacques



Il y a un truc qui me semble bizarre. Donne un peu la taille en
nombre rows de ta tables( il y'a plus de rows > 2.147.483.647)..... et
la définition de la table avec trigger, index......
Peut être 'id' de ta dernière row atteint ce nombre (>
2.147.483.647).....Ne devrais tu pas réinitialiser ce champ
(l'index)?, car pour une question de performance je préférerais
rester sur int que bigint. Ceci dit il y a pas une grande différence
de performance mais en taille c'est le double.
A+

Pour info


DBCC CHECKIDENT('Customer', RESEED, 0)


SELECT @@IDENTITY
This is everyone's favorite function, unchanged from earlier versions
of SQL Server. It returns the last IDENTITY value produced on a
connection, regardless of the table that produced the value, and
regardless of the scope of the statement that produced the value.

SELECT IDENT_CURRENT('tablename')
This new function returns the last IDENTITY value produced in a table,
regardless of the connection that created the value, and regardless of
the scope of the statement that produced the value.

SELECT SCOPE_IDENTITY()
This new function returns the last IDENTITY value produced on a
connection and by a statement in the same scope, regardless of the
table that produced the value.


-- SET IDENTITY_INSERT to ON.
SET IDENTITY_INSERT dbo.Tool ON
GO

-- Try to insert an explicit ID value of 3.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
GO