Le texte du SSIS a été tronqué avec la valeur de statut 4

je développe un paquet SSIS, essayant de mettre à jour une table SQL existante à partir d'un fichier plat CSV. Toutes les colonnes sont mises à jour avec succès sauf une colonne. Si j'ignore cette colonne sur truncate, mon paquet se complète avec succès. Donc je sais que c'est un problème tronqué et pas une erreur.

Cette colonne est vide pour presque chaque ligne. Cependant, il y a quelques lignes où ce champ est de 200-300 caractères. Ma tâche de conversion de données a identifié ce champ comme un DT_WSTR, mais de ce que j'ai lu ailleurs devrait peut-être être être DT_NTEXT. J'ai essayé les deux et j'ai même réglé le DT_WSTR à 500. Mais rien de tout cela fixe mon problème. Comment puis-je résoudre ce problème? Quel type de données devrait être cette colonne dans ma table SQL?

Error: 0xC02020A1 at Data Flow Task 1, Source - Berkeley812_csv [1]: Data conversion failed. The data conversion for column "Reason for Delay in Transition" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
Error: 0xC020902A at Data Flow Task 1, Source - Berkeley812_csv [1]: The "output column "Reason for Delay in Transition" (110)" failed because truncation occurred, and the truncation row disposition on "output column "Reason for Delay in Transition" (110)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component.
Error: 0xC0202092 at Data Flow Task 1, Source - Berkeley812_csv [1]: An error occurred while processing file "D:ftprootLocalUserRyanDaultonDocumentsBerkeley DemographicsBerkeley812.csv" on data row 758.
11
demandé sur salvationishere 2010-08-27 19:58:48

6 réponses

je soupçonne le ou un ou plusieurs personnages avaient pas de correspondance dans le code cible page une partie de l'erreur.

si vous supprimez les lignes avec les valeurs dans cette colonne, est-ce qu'il charge? Pouvez-vous identifier, en d'autres termes, les lignes qui causent l'échec du paquet? Il se peut que les données soient trop longues, ou qu'il y ait un personnage funky là-dedans que SQL Server n'aime pas.

10
répondu Beth 2010-08-27 16:05:05

Une des raisons possibles de cette erreur est que votre caractère délimiteur (virgule, point-virgule, pipe, peu importe) apparaît réellement dans le dans une seule colonne. Cela peut donner des messages d'erreur très trompeurs, souvent avec le nom d'une colonne totalement différente.

Une façon de vérifier cela est de rediriger les "mauvais" lignes d'un fichier distinct, puis inspecter manuellement. Voici une brève explication de comment le faire que:

http://redmondmag.com/articles/2010/04/12/log-error-rows-ssis.aspx

si c'est effectivement votre problème, alors la meilleure solution est de corriger les fichiers à la source pour citer les valeurs des données et/ou utiliser un delimètre différent qui n'est pas dans les données.

21
répondu Pondlife 2015-08-04 19:45:26

j'ai déjà eu ce problème, il est probable que la taille de colonne par défaut pour le fichier est incorrecte. Il mettra une taille par défaut de 50 caractères, mais les données avec lesquelles vous travaillez sont plus grandes. Dans les paramètres avancés pour votre fichier de données, ajustez la taille de la colonne de 50 à la taille de la colonne de la table.

13
répondu Nick Fedewa 2014-10-01 17:45:32

si cela vient de SQL Server Import Wizard, essayez d'éditer la définition de la colonne sur la source de données, il est de 50 caractères par défaut, mais il peut être plus long.

Data Soruce -> Advanced -> Look at the column that goes in error -> change OutputColumnWidth to 200 and try again.

4
répondu MaurGi 2016-11-28 17:37:54

Dans mon cas, certains de mes lignes n'ont pas le même nombre de colonnes que l'en-tête. Exemple, en-tête a 10 colonnes, et une de vos lignes a 8 ou 9 colonnes. (Colonnes = nombre de vous séparateur de caractères de chaque ligne)

1
répondu LT.Nolo 2012-04-11 15:27:33

si toutes les autres options ont échoué, essayer de recréer la tâche d'importation de données et/ou le gestionnaire de connexion. Si vous avez fait des changements depuis que la tâche a été créée, cela peut parfois faire l'affaire. Je sais que c'est l'équivalent d'un redémarrage, mais si ça marche, ça marche.

0
répondu grichmer 2017-05-08 17:41:58