数据流在最后一个错误记录失败 - Oracle目标

时间:2017-08-17 02:23:04

标签: visual-studio-2015 oracle11g ssis ssis-2014

我有一个简单的数据流任务,它将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都将数据访问模式设置为表格或视图 - 快速加载'。

看起来像这样 -

enter image description here

当程序包开始执行时,错误记录的提示直到最后一个表按预期进行。除了最后一条记录外,第一个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值的随机行 -

enter image description here

我正在使用最新的Oracle Provider for OLE DB,并从这里下载了最新的Oracle Data Components for Oracle link

编辑 - 只是为了让这个更加奇怪。我捕获错误行的最后一个DFT具有如下所示的所有不正确的数据(使用SQL Server目标表)。到目前为止,我已经运行了这个测试三次,而且我一直有同样的问题。有什么帮助吗?

enter image description here

1 个答案:

答案 0 :(得分:2)

在Troy Witthoeft链接的帖子之后,我所要做的就是将三个Oracle OLE DB目标的数据访问模式模式更改为“表或视图”,即OpenRowSet。然后正确地传输数据,并且根据需要精确捕获错误。