salut,
je cherche des indices pour trouver l'origine de ce bug :
Les données chaîne ou binaires seront tronquées.
salut,
je cherche des indices pour trouver l'origine de ce bug :
Les données chaîne ou binaires seront tronquées.
Vous avez construit votre table en spécifiant une longeur possible de données supérieure à la capacité de stockage de la table, qui est de 8060 octets.
Dès lors toute tentative d'insérer plus de 8060 octets dans une même ligne d'une même table est rejeté.
Démo :
A +[/code]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 CREATE TABLE T_MAX (MAX_COL1 INT, MAX_COL2 VARCHAR(8000), MAX_COL3 VARCHAR(8000)) -- Avertissement : la table 'T_MAX' a été créée mais la taille maximale de ses lignes (16029) dépasse le nombre max. d'octets par ligne (8060). L'insertion ou la mise à jour d'une ligne dans cette table va échouer si la longueur de la nouvelle ligne dépasse 8060. INSERT INTO T_MAX VALUES (1, REPLICATE('*', 8000), REPLICATE('*', 43)) INSERT INTO T_MAX VALUES (2, REPLICATE('*', 8000), REPLICATE('*', 44)) -- Serveur : Msg 511, Niveau 16, État 1, Ligne 1 -- Impossible de créer une ligne de dimension 8061 supérieure au maximum autorisé 8060. -- L'instruction a été arrêtée. SELECT MAX_COL1 FROM T_MAX MAX_COL1 ----------- 1
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Bonjour,
j'ai presque le même problème, j'ai définit un champ d'une taille de 250 caractères qui doit contenir des libellées et je fais des imports de données des fichiers de mes clients. je ne sais pas alors si les libellées de mes clients font plus de 250 caractères.
je ne veux pas mettre tous mes champs avec une taille de 2000 (j'ai beaucoup de tables, beaucoup de champs)
Est ce qu'il y a une option dans l'administration de SQL Server (version 2000) pour lui dire même si le champs est petit de prendre les 250 premiers caractères ou bien il faudra le faire par SQL (en utilisant des left sur tous les champs)
En vous remerciant.
Bonjour,
Bakoni : tu as le même soucis que Morsi
Morsi, bakoni :
y'a rien d'automatique. Donc faut faire des left ou right ou substring...
A+
ok, merci ZERS !!
Résolu pour ma part.
Finalement c'est trés possible ce que je veut faire (je le savais pas, un collègue m'a aidé)
à l'aide de SET ANSI_WARNINGS OFF
exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 create table #tmp1 ( col varchar(5) ) insert into #tmp1 (col) values ('1234567') select * from #tmp1 SET ANSI_WARNINGS OFF insert into #tmp1 (col) values ('1234567') select * from #tmp1 SET ANSI_WARNINGS ON insert into #tmp1 (col) values ('1234567') select * from #tmp1 drop table #tmp1
Partager