SSIS截断错误
首先,我已经搜索,搜索和搜索,没有找到任何帮助我的东西。SSIS截断错误
我有一个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 - 在屏幕上沮丧(没有帮助)。
我在路边。我不知道该做什么了。帮帮我...?
是的,这完全令人发狂。
还有两个 OLE DB源输出下的列集:“外部列”和“输出列”。
你有没有试图改变都列的长度 - 列“名称”下,外部列”,然后在‘输出列’
这种错误往往是从一个错配发生在外部列定义之间其相应的输出列
在一个OLE DB源中,外部列应该根据源数据类型自动输入:外部提供者应该向元数据交换SSIS,并说“好吧,这个列是输入的字符串(40)“,例如,但是提供者或者SSIS经常被称为”不完全胜任“ s和长度正确。
更新:您是否尝试过独立于SSIS检查源中数据的长度?类似于:
SELECT MAX(Len(TheReallyAnnoyingColumn)) FROM TheTable
是的,在两个地方都改变了......仍然没有工作。 :( –
OMG!谢谢!看起来有点危险,但它有效。 –
它应该允许你确定你的值是否超出你定义的字段长度(S)。如果你看到我的意思! - 问题可能不在你的定义中,而是在数据本身..... –
@ Mr.Glaurung ...这可能(可能)不是一个永久的答案......它应该是Supa Stix为你提供的一种方式找出不匹配的地方 – Charles