SSIS 截断错误返回状态 4

SSIS truncated error returned status 4

我正在尝试将文件从 Excel 导入 SQL table。当我通过数据转换从 unicode string[DT_WSTR] 转换为 string[DT_STR] 时,某些列出现截断错误。这是输出错误:

[Data Conversion [2]] Error: Data conversion failed while converting column "Contact Name" (187) to column "DataContactName" (105). The conversion returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".

所以数据流以失败告终,但一些行被复制到 sql table。 是否有一些解决方法或解决方案是什么?

数据转换中为DataContactName定义的长度似乎小于"Contact Name"的长度。检查列的最大长度 "Contact Name" 并根据它设置 DataContactName 大小。您看到插入的行很少,因为它们可能是在长度更大的数据到达之前插入的。

您可以执行以下操作

  1. 如果您确定您的转换是正确的并且 Excel 不包含任何在转换为 non-unicode/ASCII 文本时丢失的字符,因此不会导致截断,请将失败设置从 Failure on errorIgnore on error。虽然你绝对应该输出错误并记录到一个平面文件以检查丢失的数据。
  2. 检查数据table的列;是否足以容纳所有可能的 excel 文件值?如果不确定,请尝试将 table 列转换为 VARCHAR(MAX)。如果是由于大小原因,您现在不应该收到截断错误。另一种方法是简单地为 VARCHAR(N) 选择目标大小,其中 N=2*excel 列的最大长度。

关于您的评论:

I added ignore truncation errors in error output and all rows were copied in sql table. There was no problem to convert characters like ; or "á". Can u brief me what kind of errors i ignored?

我建议您在将失败设置从 Ignore Failure 更改为 Redirect Row 后,对错误输出使用多播转换。然后将 Multi-cast 的输出之一插入 SQL 服务器,将另一个插入平面文件目标。通过这种方式,您可以将数据发送到 SQL 服务器以及平面文件中以分析错误