7

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

在此处输入图像描述

我在 Code Project 上找到了一个非常基本的教程来创建一个包。我完成了这些步骤,但是在调试时出现了一个奇怪的错误(如下):

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

SSIS 包“C:\Users\USRNAME\Desktop\Projects\DataGeneratorSsis\DataGeneratorSsis\Package.dtsx”开始。信息:数据流任务中的 0x4004300A,SSIS.Pipeline:验证阶段开始。信息:数据流任务中的 0x4004300A,SSIS.Pipeline:验证阶段开始。警告:数据流任务中的 0x80047076,SSIS.Pipeline:输出“平面文件源输出”(6) 和组件“平面文件源”(2) 上的输出列“intApplication”(7) 随后未在数据流中使用任务。删除这个未使用的输出列可以提高数据流任务的性能。信息:0x40043006 在数据流任务,SSIS.Pipeline:准备执行阶段开始。信息:数据流任务的 0x40043007,SSIS.Pipeline:预执行阶段开始。信息: 2:文件“C:\Users\USRNAME\Desktop\ddd.txt”的处理已经开始。信息:数据流任务的 0x4004300C,SSIS.Pipeline:执行阶段开始。信息:数据流任务中的 0x402090DE,平面文件源2:为文件“C:\Users\USRNAME\Desktop\ddd.txt”处理的数据行总数为 2。错误:0xC0202009 在数据流任务,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 Destination.Inputs[OLE DB 目标输入].Columns[AppID] 在 OLE DB Destination.Inputs[OLE DB 目标输入] 上存在错误。返回的列状态为:“由于可能丢失数据,无法转换该值。”。错误:数据流任务中的 0xC0209029,OLE DB 目标 [43]:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“OLE DB Destination.Inputs[OLE DB Destination Input]”失败,因为发生错误代码 0xC0209077,并且“OLE DB Destination.Inputs[OLE DB Destination Input]”上的错误行处置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。错误:数据流任务中的 0xC0047022,SSIS.Pipeline:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。处理输入“OLE DB 目标输入”(56) 时,组件“OLE DB 目标”(43) 上的 ProcessInput 方法失败,错误代码为 0xC0209029。已识别的组件从 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。Execution 方法成功,但引发的错误数 (4) 达到了允许的最大值 (1);导致失败。当错误数量达到 MaximumErrorCount 中指定的数量时,就会发生这种情况。更改 MaximumErrorCount 或修复错误。SSIS 包“C:\Users\USRNAME\Desktop\Projects\DataGeneratorSsis\DataGeneratorSsis\Package.dtsx”完成:失败。

相关的错误信息

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

4

5 回答 5

12

因此,发生此错误是因为源中的 AppID 列的值对目标中的 AppID 列无效。

一些可能的例子:

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

SSIS 由元数据管理,它希望您已正确设置输入和输出,以便两者的可接受值在同一范围内。

于 2013-09-30T15:47:03.420 回答
1

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

于 2013-10-03T15:06:01.580 回答
0

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

于 2014-12-05T01:50:14.600 回答
0

错误 jet 4 oledb 可以升级 kb4041678 kb4041681

于 2017-11-10T20:36:52.750 回答
0

在我的情况下,运行包的底层系统帐户被锁定。一旦我们解锁了系统帐户并重新运行包,它就成功执行了。开发者说他是在调试时知道的,他直接尝试连接到服务器并检查连接状态。

于 2016-03-09T12:20:31.093 回答