SSIS错误代码DTS_E_OLEDB_NOPROVIDER_ERROR。请求的OLE DB提供程序OraOLEDB.Oracle.1未注册

时间:2012-01-05 16:02:14

标签: oracle sql-server-2008 ssis sql-server-agent

我有两台服务器:

服务器A - 这是我的SSIS包存放在文件目录中的地方

服务器B - 这是我的SQL Server 2008数据库和SQL Server代理作业所在的位置。

在服务器B上,我创建了一个具有一个步骤的SQL Server代理作业:它调用服务器A上的SSIS包,该包执行从Oracle数据库到服务器B上的SQL Server数据库的数据提取。作业步骤详细信息如下...

工作步骤属性:

Type = SQL Server Integration Services包

常规标签:

包源=文件系统

Package =完整包路径

在“作业步骤属性”

中未进行任何其他配置

SSIS包从Oracle数据库中提取数据并使用OLE DB Source将其加载到SQL Server中,连接管理器使用以下提供程序:OLE DB的本机OLE DB \ Oracle提供程序

使用SQL Server Business Intelligence Development Studio从服务器A手动执行SSIS包时,包运行完成且没有错误。

但是,使用SQL Server代理作业从服务器B执行相同的程序包时,会出现以下错误:

  

错误:2012-01-05 08:27:04.45代码:0xC0209302来源:   SSIS_PDS_Template连接管理器“My_OLE”描述:SSIS   错误代码DTS_E_OLEDB_NOPROVIDER_ERROR。请求的OLE DB   提供商OraOLEDB.Oracle.1未注册。错误代码:0x00000000。   OLE DB记录可用。来源:“Microsoft OLE DB服务   组件“Hresult:0x80040154描述:”类未注册“。   结束错误错误:2012-01-05 08:27:04.45代码:0xC020801C
  来源:CIR_OLE OLE DB源[1]描述:SSIS错误代码   DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。

此外,如果我在SSIS包中禁用Oracle数据库提取并从服务器B运行SQL Server代理程序作业,它将运行完成并且出现零错误。如何解决?

1 个答案:

答案 0 :(得分:2)

您需要在服务器B上安装Oracle OLE DB驱动程序,服务器B在服务器B的内存中从服务器A运行程序包。如果那是一个专用的ETL框,你真的应该考虑在服务器A上安排和运行它们。