SSIS字符串截断错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSIS字符串截断错误相关的知识,希望对你有一定的参考价值。

我有一个SQL Server 2005 SP2数据库,其中有一个poc_resp_city属性为nvarchar(35)的表。

它在2个月前更改为nvarchar(80),而没有在数据仓库中对齐相同的属性。 (仍然有nvarchar(35)

SSIS数据加载包(正常工作两个月后)现在每次运行时都会返回包失败,并出现以下错误:

输出“OLE DB源输出”(11)上的输出列“poc_resp_city”(2250)出错。返回的列状态为:“文本被截断,或者目标代码页中的一个或多个字符不匹配。”。输出“OLE DB源输出”(11)上的输出列“poc_resp_city”(2250)出错。返回的列状态为:“文本被截断,或者目标代码页中的一个或多个字符不匹配。”。

SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。组件“Source Table”(1)上的PrimeOutput方法返回错误代码0xC020902A。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

包和数据库都没有针对这个问题进行修改。我知道我可以忽略这个错误,或者我可以做出安排以确保它正常工作但是我想提供一个正确和可接受的答案,为什么在修改后2个月出现这个错误?因为也许我错过了这种情况中的重要一步。

重要提示:我甚至没有一个超过35个字符的记录,因此绝不会发生截断。 (此警告属于某种SSIS验证步骤)

现在我想,也许经过一段时间后,SSIS包重新编译自己,现在它在元数据中看到这个错位(35 = / = 80),并且由于TruncationRowDisposition属性设置为RD_FailComponent,它使组件失败。

我会排除代码页选项,因为每个数据库列都是nvarchar,而不是varchar,所以不应该这样。

谢谢!

答案

您需要刷新列的大小:

  1. 右键按下OLE DB Source -> Show Advanced Editor
  2. 选择qazxsw poi tab - > qazxsw poi - > qazxsw poi
  3. 在右侧面板中Input and Output Properties行插入新的大小。
  4. Ole DB Source Output

或者你可以从qazxsw poi复制你的查询,删除qazxsw poi,插入新的qazxsw poi和粘贴查询。这将自动刷新您的列。

只需记住数据流中可能有更多元素需要编辑列的长度,例如Output Columns ...

以上是关于SSIS字符串截断错误的主要内容,如果未能解决你的问题,请参考以下文章

SSIS错误导入Excel日期(截断错误)

SSIS 暂存截断仓库

SSIS - 将数据从 Excel 导出到 sql 表

SSIS:截断Excel目标

sql server:错误 0xc02020a1: 数据流任务 1: 数据转换失败。列“列 0”的数据转换返回状态值 4 和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。 (

SSIS包没有填充任何结果