285 votes

erreur, chaîne ou binaire serait tronqué lorsque vous essayez d’insérer

Je suis en cours d'exécution des données.fichier bat avec les lignes suivantes:

Rem Tis batch file will populate tables

cd\program files\Microsoft SQL Server\MSSQL
osql -U sa -P Password -d MyBusiness -i c:\data.sql

Le contenu des données.fichier sql est:

   insert Customers
            (CustomerID, CompanyName, Phone)
             Values('101','Southwinds','19126602729')

Il y a plus de 8 lignes similaires pour l'ajout d'enregistrements.

Lorsque je l'exécute avec start > run > cmd > c:\data.bat, j'obtiens ce message d'erreur:

1>2>3>4>5>....<1 row affected>
Msg 8152, Level 16, State 4, Server SP1001, Line 1
string or binary data would be truncated.

<1 row affected>

<1 row affected>

<1 row affected>

<1 row affected>

<1 row affected>

<1 row affected>

Aussi, je suis un newbie évidemment, mais ce n' Level #, et state # moyenne de, et comment puis-je rechercher les messages d'erreur comme celui ci-dessus: 8152?

Merci à l'avance!

686voto

karthik Points 4916

Chaque fois que vous voyez le message...

Pensez à vous-même... Le champ n’est pas assez grand pour contenir mes données.

Vérifier la structure de la table pour la table customers. Je pense que vous trouverez que la longueur d’un ou plusieurs champs n’est pas assez grand pour contenir les données que vous tentez d’insérer. Par exemple, si le téléphone est un champ varchar (8), et que vous essayez de mettre 11 caractères dans lui, vous obtiendrez cette erreur.

28voto

alterfox Points 729

J’ai eu ce problème, bien que la longueur des données est plus courte que la longueur du champ. Il s’est avéré que le problème était d’avoir une autre table de journal (pour la piste d’audit) remplie par un déclencheur sur la table principale, où la taille de la colonne devait aussi être changé.

20voto

Andriy M Points 40395

Dans l’un de le des déclarations, vous essayez d’insérer une chaîne trop longue dans une chaîne ( ou `` ) colonne.

Si ce n’est pas évident que est l’auteur de l’infraction par un simple regard sur le script, on pouvait compter les lignes qui surviennent avant le message d’erreur. Le plus de numéro obtenu un vous donne le numéro de relevé. Dans votre cas, il semble être le deuxième INSERT qui produit l’erreur.

8voto

hola77 Points 1

Une autre situation dans laquelle vous pouvez obtenir cette erreur est le suivant :

J’ai eu la même erreur et la raison était que, dans une instruction INSERT qui a reçu les données de l’UNION, l’ordre des colonnes était différente de la table d’origine. Si vous modifiez l’ordre dans #table3 à a, b, c, vous corrigera l’erreur.

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