错误:0xC0202009在数据流任务,OLE DB目标[43]:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80040E21

时间:2013-09-30 11:42:45

标签: ssis bids ssis-2012

我的源是TXT平面文件源,目标是OLE DB类型。 (见图)

enter image description here

我找到了一个非常basic tutorial on Code Project来创建一个包。我完成了这些步骤,但在调试时遇到了一个奇怪的错误(下图):

有人可以解释这个错误吗?我花了几个小时在网上搜索错误。

  

SSIS包   “C:\用户\ USRNAME \桌面\项目\ DataGeneratorSsis \ DataGeneratorSsis \ Package.dtsx”   开始。信息:数据流任务中的0x4004300A,SSIS.Pipeline:   验证阶段正在开始。信息:数据流中的0x4004300A   任务,SSIS.Pipeline:验证阶段正在开始。警告:   数据流任务中的0x80047076,SSIS.Pipeline:输出列   “intApplication”(7)关于输出“平面文件源输出”(6)和   组件“平面文件源”(2)随后未在数据中使用   流程任务。删除此未使用的输出列可以增加数据流   任务表现。信息:数据流任务中的0x40043006,   SSIS.Pipeline:准备执行阶段正在开始。信息:   0x40043007在数据流任务,SSIS.Pipeline:预执行阶段是   开始。信息:0x402090DC数据流任务,平面文件源   2:处理文件“C:\ Users \ USRNAME \ Desktop \ ddd.txt”   开始。信息:数据流任务中的0x4004300C,SSIS.Pipeline:   执行阶段开始。信息:数据流任务中的0x402090DE,   平面文件源2:为文件处理的数据行总数   “C:\ Users \ USRNAME \ Desktop \ ddd.txt”为2.错误:0xC0202009 at Data   流任务,OLE DB目标[43]:SSIS错误代码DTS_E_OLEDBERROR。   发生OLE DB错误。错误代码:0x80040E21。 OLE DB记录   是可用的。来源:“Microsoft SQL Server Native Client 11.0”   Hresult:0x80040E21描述:“多步OLE DB操作   生成的错误。检查每个OLE DB状态值(如果可用)。没有   工作完成了。“。错误:数据流任务中的0xC020901C,OLE DB   目标[43]:OLE DB出错   OLE DB上的Destination.Inputs [OLE DB目标输入] .Columns [AppID]   Destination.Inputs [OLE DB目标输入]。列状态   返回的是:“由于潜力,价值无法转换   数据丢失。“。错误:数据流任务中的0xC0209029,OLE DB   目的地[43]:SSIS错误代码   DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “OLE DB   Destination.Inputs [OLE DB目标输入]“因为错误而失败   代码0xC0209077发生,错误行处理“OLE DB   Destination.Inputs [OLE DB目标输入]“指定失败   错误。指定的指定对象发生错误   零件。在此之前可能会发布错误消息   有关失败的信息。错误:数据流任务中的0xC0047022,   SSIS.Pipeline:SSIS错误代码DTS_E_PROCESSINPUTFAILED。该   组件“OLE DB Destination”(43)上的ProcessInput方法失败   处理输入“OLE DB Destination”时出错代码0xC0209029   输入“(56)。标识的组件从中返回错误   ProcessInput方法。该错误特定于组件,但是   错误是致命的,将导致数据流任务停止运行。   在此之前可能会发布错误消息以获取更多信息   关于失败。信息:数据流任务中的0x40043008,   SSIS.Pipeline:后执行阶段正在开始。信息:   0x402090DD在数据流任务,平面文件源2:处理   文件“C:\ Users \ USRNAME \ Desktop \ ddd.txt”已结束。信息:   0x4004300B在数据流任务,SSIS.Pipeline:“OLE DB目标”   写了0行。信息:数据流任务中的0x40043009,   SSIS.Pipeline:清理阶段正在开始。任务失败:数据流任务   警告:包装上的0x80019002:SSIS警告代码   DTS_W_MAXIMUMERRORCOUNTREACHED。执行方法成功了,但是   引发的错误数量(4)达到允许的最大值(1);   导致失败。当错误数量达到时,就会发生这种情况   MaximumErrorCount中指定的数字。改变   MaximumErrorCount或修复错误。 SSIS包   “C:\用户\ USRNAME \桌面\项目\ DataGeneratorSsis \ DataGeneratorSsis \ Package.dtsx”   完成:失败。

相关错误消息

OLE DB Destination.Inputs [OLE DB目标输入]上的错误。OLE DB Destination.Inputs [OLE DB目标输入]上的[AppID] .Columns [AppID]。返回的列状态为:“由于可能丢失数据,无法转换该值。”

5 个答案:

答案 0 :(得分:9)

所以发生此错误是因为您在AppID列的源中有一个值,该值对目标中的AppID列无效。

一些可能的例子:

  • 您正尝试在8个字符的字段中插入10个字符的值。
  • 您正在尝试将大于127的值插入tinyint字段。
  • 您正尝试将值6.4578插入到小数(5,1)字段中。

SSIS受元数据控制,它希望您正确设置输入和输出,使两者的可接受值都在同一范围内。

答案 1 :(得分:1)

这通常是由截断引起的(传入的值太大而无法放入目标列)。不幸的是,SSIS不会告诉您违规列的名称。我使用第三方组件来获取此信息:http://naseermuhammed.wordpress.com/tips-tricks/getting-error-column-name-in-ssis/

答案 2 :(得分:0)

如果查询以异常方式失败,也可以从select组件接收此错误(例如:子查询在oracle oledb连接中返回多行)

答案 3 :(得分:0)

在我的情况下,程序包运行的基础系统帐户被锁定。一旦我们解锁了系统帐户并重新启动了包,它就会成功执行。开发人员说他在调试时就知道了这一点,他直接尝试连接服务器并检查连接状态。

答案 4 :(得分:0)

错误喷射4 oledb可以升级kb4041678 kb4041681