web-dev-qa-db-fra.com

Le texte SSIS a été tronqué avec la valeur d'état 4

Je développe un package SSIS, essayant de mettre à jour une table SQL existante à partir d'un fichier plat CSV. Toutes les colonnes sont correctement mises à jour à l'exception d'une colonne. Si j'ignore cette colonne sur tronquer, mon paquet se termine avec succès. Je sais donc que c’est un problème tronqué et non une erreur.

Cette colonne est vide pour presque chaque ligne. Cependant, il y a quelques lignes où ce champ contient 200 à 300 caractères. Ma tâche de conversion de données a identifié ce champ comme étant un DT_WSTR, mais d'après ce que j'ai lu ailleurs, il pourrait s'agir de DT_NTEXT. J'ai essayé les deux et j'ai même réglé le DT_WSTR sur 500. Mais rien de tout cela n'a résolu mon problème. Comment puis-je réparer? Quel type de données cette colonne devrait-elle être 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:\ftproot\LocalUser\RyanDaulton\Documents\Berkeley Demographics\Berkeley812.csv" on data row 758.
11
salvationishere

Je soupçonne que le ou un ou plusieurs caractères n’ont pas de correspondance dans la page de code cible Faisant partie de l’erreur.

Si vous supprimez les lignes contenant des valeurs dans cette colonne, cela se chargera-t-il? Pouvez-vous identifier, en d'autres termes, les lignes qui entraînent l'échec du package? Les données sont peut-être trop longues, ou qu’il y ait un caractère génial là-bas, SQL Server n’aime pas.

10
Beth

Une des raisons possibles de cette erreur est que votre caractère délimiteur (virgule, point-virgule, tuyau, ou autre) apparaît réellement dans les données dans une 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 consiste à rediriger les «mauvaises» lignes vers un fichier séparé, puis à les inspecter manuellement. Voici une brève explication de la procédure à suivre:

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

Si tel est votre problème, la meilleure solution consiste à réparer les fichiers à la source pour citer les valeurs des données et/ou à utiliser un séparateur différent qui ne figure pas dans les données.

22
Pondlife

J'ai déjà eu ce problème auparavant, il est probable que la taille de colonne par défaut du fichier soit incorrecte. La taille par défaut sera de 50 caractères, mais les données avec lesquelles vous travaillez sont plus volumineuses. Dans les paramètres avancés de votre fichier de données, ajustez la taille de colonne de 50 à la taille de colonne du tableau.

15
Nick Fedewa

Si cela provient de l'Assistant d'importation de SQL Server, essayez de modifier la définition de la colonne dans la source de données. Il s'agit de 50 caractères par défaut, mais peut être plus long.

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

4
MaurGi

Dans mon cas, certaines de mes lignes n'avaient pas le même nombre de colonnes que l'en-tête. Exemple, l'en-tête comporte 10 colonnes et l'une de vos lignes comporte 8 ou 9 colonnes. (Colonnes = Nombre de vos délimiteurs dans chaque ligne)

2
LT.Nolo

J'ai déjà eu ce problème auparavant, vous pouvez aller à l'onglet "avancé" de la page "choisir une source de données" et cliquer sur le bouton "types suggérés", et définir le "nombre de lignes" autant que vous le souhaitez. ensuite, le type et le texte qualifié sont définis sur les valeurs vraies.

j'ai appliqué la solution ci-dessus et je peux convertir mes données en SQL.

0
Arash Farahzadi

Si toutes les autres options ont échoué, essayez de recréer la tâche d'importation de données et/ou le gestionnaire de connexions. Si vous avez apporté des modifications depuis la création de la tâche, cela peut parfois faire l'affaire. Je sais que cela équivaut à redémarrer, mais, hé, si ça marche, ça marche.

0
grichmer