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

depassement du nombre maximum d'octet par ligne

3 réponses
Avatar
alpahux
si j'en crois les infos que me donne enterprise manager

une de mes table depasse de loin le quotas des 8060 octet par ligne

ok soit il m'annonce 14872 octet par lighne, c'est bcp sans doute

mais on fait comment pour limitern et surtout pour calculer
car si j'additionne la longueur des champs j'obtiens 7150 et non 14872

j'additionne sans doute pas bien, par exemple je considère qu'un champ text
fait 16 octet car il m'annonce 16

j'ai surement tort, mais je flotte un peu

de l'aide me serait super précieuse

merci d'avance

3 réponses

Avatar
Pascal Deliot
Bonjour,

Pour le champs text a priori c'est ça.
Mais peut tu nous donner la définition de tes champs?
Attention pour les champs Unicode (genre NCHAR) il faut compter 2 octets par
caractère.

Pascal

"alpahux" a écrit dans le message de
news:
si j'en crois les infos que me donne enterprise manager

une de mes table depasse de loin le quotas des 8060 octet par ligne

ok soit il m'annonce 14872 octet par lighne, c'est bcp sans doute

mais on fait comment pour limitern et surtout pour calculer
car si j'additionne la longueur des champs j'obtiens 7150 et non 14872

j'additionne sans doute pas bien, par exemple je considère qu'un champ
text
fait 16 octet car il m'annonce 16

j'ai surement tort, mais je flotte un peu

de l'aide me serait super précieuse

merci d'avance


Avatar
Fred BROUARD
Bonjour,

alpahux a écrit:
si j'en crois les infos que me donne enterprise manager

une de mes table depasse de loin le quotas des 8060 octet par ligne

ok soit il m'annonce 14872 octet par lighne, c'est bcp sans doute

mais on fait comment pour limitern et surtout pour calculer
car si j'additionne la longueur des champs j'obtiens 7150 et non 14872



Pour les colonnes de type caractères :
si codage UNICODE => un caratère = 2 octets
si codage ASCII => un caracèere = 1 octet

Pour vous en convaincre :

SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
CHARACTER_OCTET_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS


j'additionne sans doute pas bien, par exemple je considère qu'un champ text
fait 16 octet car il m'annonce 16

j'ai surement tort, mais je flotte un peu



Exemple de requête de calcul approximatif des lignes d'une table hors blob :

SELECT CAST(TABLE_NAME AS VARCHAR(32)) AS TABLE_NAME, sum(CASE
WHEN DATA_TYPE = 'smallint' THEN 2
WHEN DATA_TYPE = 'int' THEN 4
WHEN DATA_TYPE = 'bit' THEN 1
WHEN DATA_TYPE = 'datetime' THEN 4
WHEN DATA_TYPE = 'smalldatetime' THEN 4
WHEN DATA_TYPE = 'float' THEN 6
WHEN DATA_TYPE = 'numeric' THEN 8
WHEN DATA_TYPE = 'decimal' THEN 8
ELSE CHARACTER_OCTET_LENGTH
END) AS OCTETS
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE NOT IN ('text', 'ntext', 'image')
GROUP BY TABLE_NAME
ORDER BY 2 DESC, 1

On peut aussi utiliser
DBCC SHOWCONTIG ( 'Matable') WITH TABLERESULTS
et lire les colonnes :
MinimumRecordSize MaximumRecordSize AverageRecordSize

A +


de l'aide me serait super précieuse

merci d'avance



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
alpahux
Merci à vous deux pour votre aide précieuse