Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2015 上次错误记录时数据流失败-Oracle目标_Visual Studio 2015_Oracle11g_Ssis_Ssis 2014 - Fatal编程技术网

Visual studio 2015 上次错误记录时数据流失败-Oracle目标

Visual studio 2015 上次错误记录时数据流失败-Oracle目标,visual-studio-2015,oracle11g,ssis,ssis-2014,Visual Studio 2015,Oracle11g,Ssis,Ssis 2014,我有一个简单的数据流任务,将1M条记录从源传输到目标。源表和目标表都是Oracle表。源位置的数据由两列Id和Name组成,如下所示- create table SrcEmployeeData ( Id int ,Name varchar(50) ); 其中的值是(1,'Test'),(2,'Test'),依此类推。目标表是源表的镜像,但“Name”列不是空列除外。在源代码中,我将10个随机行的Name列更新为NULL。为了捕获这些错误,我创建了4个具有正确错误重定向的目的地

我有一个简单的数据流任务,将1M条记录从源传输到目标。源表和目标表都是Oracle表。源位置的数据由两列Id和Name组成,如下所示-

create table SrcEmployeeData
(
   Id   int
  ,Name varchar(50) 
);
其中的值是(1,'Test'),(2,'Test'),依此类推。目标表是源表的镜像,但“Name”列不是空列除外。在源代码中,我将10个随机行的Name列更新为NULL。为了捕获这些错误,我创建了4个具有正确错误重定向的目的地

前三个是目标表的一部分。第一个将每批行数/最大插入提交大小设置为50000。第二个值设置为10000。第三个参数的值设置为1。最终DFT用于捕获实际错误记录。所有三个DFT都将数据访问模式设置为“表或视图-快速加载”

看起来像这样-

当包开始执行时,错误记录的传播直到最后一个表按预期进行。除最后一条记录外,批量设置为50000条记录的第一次DFT失败。当我查看destination EmployeeData表时,令人惊讶的是,我甚至找不到一条记录。这里出了什么问题

这是我得到的两个错误-

[OLE_DST-加载数据(50000行)[69]]错误:SSIS错误代码 DTS_E_OLEDBERROR。发生OLE DB错误。错误代码: 0xFFFFFF

[SSIS.Pipeline]错误:SSIS错误代码 DTS_E_ProcessInput失败。组件上的ProcessInput方法 “OLE_DST-加载数据(50000行)”(69)失败,错误代码为 0xC0202009,同时处理输入“OLE DB目标输入”(82)。这个 已标识的组件从ProcessInput方法返回错误。 该错误特定于组件,但该错误是致命的且 将导致数据流任务停止运行。可能有错误 在此之前发布的消息包含有关故障的更多信息

以下是具有空值的随机行-

我正在使用最新的Oracle Provider for OLE DB,并从此处下载了最新的Oracle Data Components for Oracle-


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


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

记住,这些批提交都是事务。因此,批处理中的一个故障和整个事务都会回滚。9/10是奇数。目标表是否具有唯一索引?这将允许10个空值中正好有一个为您留下9个错误。看看这个,这可能会有帮助。它讨论了您的确切错误代码。感谢@TroyWitthoeft的链接。我已将DFT的访问模式更新为“OpenRowset”,数据已正确捕获。