如何修复SSIS中的多步​​OLE DB操作错误?

Dan*_*Dan 23 sql-server ssis

我正在尝试制作DTS包以在同一服务器上的两个数据库之间传输数据,并且我收到以下错误.我读到,当您在不同的数据库类型之间进行传输并且精度损失时,可能会发生多步OLE DB操作生成错误,但这不是这种情况.如何检查列元数据?

错误:0xC0202009在数据流任务,piTech [183]​​:发生了OLE DB错误.错误代码:0x80040E21.OLE DB记录可用.来源:"Microsoft SQL Native Client"Hresult:0x80040E21说明:"多步OLE DB操作生成错误.检查每个OLE DB状态值,如果可用.没有工作.".

错误:数据流任务中的0xC0202025,piTech [183]​​:无法创建OLE DB访问器.验证列元数据是否有效.

错误:数据流任务中的0xC004701A,DTS.Pipeline:组件"piTech"(183)未执行预执行阶段并返回错误代码0xC0202025.

Anï*_*éli 35

看看字段的属性(类型,长度,默认值等),它们应该是相同的.

我有SQL Server 2008 R2的这个问题,因为字段的长度不相等.

  • +1 - 这很有效.我刚刚通过使用派生列将`memo`类型(从我的访问源数据库)转换为SSIS中的`DT_WSTR`类型来解决相同的错误.将我的字符串作为`DT_WSTR`类型在我的SQL 2008 R2 DB中将字符串存储为nvarchar时效果很好. (3认同)

小智 9

当源表包含TEXT列且目标不是TEXT列时,此错误很常见.如果您之前没有遇到(或忘记!)这可能是真正的时间.

将text列转换为string,并将截断时的错误条件设置为ignore.这通常可以作为此错误的解决方案.


Mic*_*cki 0

您可以使用SELECT * FROM INFORMATION_SCHEMA.COLUMNS,但我怀疑您是从源数据库的脚本创建目标数据库的,因此它们的列很可能是相同的。

不过,一些比较可能会带来一些启发。

此类错误有时也源于尝试向 varchar 列插入过多数据。