我的源是TXT平面文件源,目标是OLE DB类型。 (见图)
我找到了一个非常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]。返回的列状态为:“由于可能丢失数据,无法转换该值。”
答案 0 :(得分:9)
所以发生此错误是因为您在AppID列的源中有一个值,该值对目标中的AppID列无效。
一些可能的例子:
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