SSIS截断错误

时间:2016-04-29 09:30:32

标签: ssis ibm-midrange truncate db2-400

首先,我进行了搜索,搜索和搜索,没有找到任何可以帮助我的事情。

我有一个SSIS项目,它将从iSeries AS400中获取大量数据,并且它在两个非常不同的步骤中执行此操作。 第1步完美无缺,因此我设法从AS400获取大量信息,因此连接本身不是问题。

第二步失败的可能是以下三个错误代码:

    [OLE DB Source [41]] Error: There was an error with OLE DB
Source.Outputs[OLE DB Source Output].Columns[NAME] on OLE DB
Source.Outputs[OLE DB Source Output]. The column status returned was: "Text
was truncated or one or more characters had no match in the target code 
page.".

    [OLE DB Source [41]] Error: The "OLE DB Source.Outputs[OLE DB Source 
Output].Columns[NAME]" failed because truncation occurred, and the
truncation row disposition on "OLE DB Source.Outputs[OLE DB Source
Output].Columns[NAME]" specifies failure on truncation. A truncation error
occurred on the specified object of the specified component.

    [SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.  The
PrimeOutput method on OLE DB Source returned error code 0xC020902A.  The
component returned a failure code when the pipeline engine called
PrimeOutput(). The meaning of the failure code is defined by the component,
but the error is fatal and the pipeline stopped executing.  There may be
error messages posted before this with more information about the failure.

我拼命想找到这个问题的解决方案,这就是我所做的(根本没有帮助):

1 - SOURCE的高级编辑 - >选项卡:输入和输出属性 - > OLE DB源输出 - >输出列已更改为 a)40(从28)长度 - 没有变化 b)数据文本(来自字符串) - 完全崩溃 c)将代码页从1251更改为UTF-8 - 无变化

2 - 在MSSMS中使用OPENQUERY获取信息,效果非常好。

3 - 在屏幕上沮丧地尖叫着(没有帮助)。

我在路边。我不知道该怎么办了。帮助...?

3 个答案:

答案 0 :(得分:1)

是的,这完全是令人抓狂的。

OLE DB源输出下有两个列:"外部列"和"输出列"。

您是否尝试更改两个列的长度 - 列"名称"在外部列下"并在"输出列"?

这种错误通常是由于外部列定义与其相应的输出列不匹配所致。

在OLE DB源中,外部列应该根据源数据类型自动输入:外部提供者应该将元数据与SSIS对话,说"好吧,这个列是键入的字符串(40 )",例如。但是,无论是提供者还是SSIS,通常,我们都会说,"而不是完全胜任的#34;获得正确的类型和长度。

更新:您是否尝试过独立于SSIS检查来源中的数据长度?类似的东西:

SELECT MAX(Len(TheReallyAnnoyingColumn)) FROM TheTable

答案 1 :(得分:1)

您可能会在源编辑器对话框中找到将截断的错误输出设置为"忽略失败"帮助您解决问题。

Ignore Truncation "Error"

更新 - 截断重定向: -

在surname上强制截断 - 输出设置为重定向 并在错误输出上启用了数据查看器

DTSX wif redirect set on name

然后将数据查看器中的行复制到记事本以显示错误

Row copied to notepad to show error

将相同的dtsx wif截断设置为失败: -

Package failure

答案 2 :(得分:0)

其他人都专注于截断。我很好奇 一个或多个字符在目标代码页中没有匹配 部分错误消息。

如何在IBM i上实际定义列?我对编码字符集标识符(又名CCSID)

特别感兴趣

在绿色屏幕中,您可以使用显示文件字段描述(DSPFFD)命令。 DSPFFD screen shot

您也可以使用iNav GUI iNav Screenshot