我有一个简单的数据流任务,它将1M记录从源传输到目标。 Source表和Destination表都是Oracle表。源数据由两列Id和Name组成,如下所示 -
create table SrcEmployeeData
(
Id int
,Name varchar(50)
);
其中的值是(1,'测试'),(2,'测试')等等,直到百万。目标表是源表的镜像,除了名称' column是非空列。在源头,我已将10个随机行的Name列更新为NULL。为了捕获这些错误,我创建了4个具有正确错误重定向的目标。
前三个是目标表。第一个具有每批次行数/最大插入提交大小设置为50,000。第二个具有设置为10,000的相同值。第三个具有相同的值设置为1.最终的DFT用于捕获实际的错误记录。所有三个DFT都将数据访问模式设置为表格或视图 - 快速加载'。
看起来像这样 -
当程序包开始执行时,错误记录的提示直到最后一个表按预期进行。除了最后一条记录外,第一个DFT与批量设置的50,000条记录失败。当我查看目的地EmployeeData表时,令人惊讶的是我甚至找不到一条记录。这里出了什么问题?
这是我得到的两个错误 -
[OLE_DST - 加载数据(50,000行)[69]]错误:SSIS错误代码 DTS_E_OLEDBERROR。发生OLE DB错误。错误代码: 0xFFFFFFFF的。
[SSIS.Pipeline]错误:SSIS错误代码 DTS_E_PROCESSINPUTFAILED。组件上的ProcessInput方法 " OLE_DST - 加载数据(50,000行)" (69)因错误代码而失败 0xC0202009处理输入" OLE DB目标输入" (82)。该 已识别的组件从ProcessInput方法返回错误。 该错误特定于组件,但错误是致命的 将导致数据流任务停止运行。可能有错误 在此之前发布的消息以及有关失败的更多信息。
以下是具有NULL值的随机行 -
我正在使用最新的Oracle Provider for OLE DB,并从这里下载了最新的Oracle Data Components for Oracle link。
编辑 - 只是为了让这个更加奇怪。我捕获错误行的最后一个DFT具有如下所示的所有不正确的数据(使用SQL Server目标表)。到目前为止,我已经运行了这个测试三次,而且我一直有同样的问题。有什么帮助吗?
答案 0 :(得分:2)
在Troy Witthoeft链接的帖子之后,我所要做的就是将三个Oracle OLE DB目标的数据访问模式模式更改为“表或视图”,即OpenRowSet。然后正确地传输数据,并且根据需要精确捕获错误。