我有两台服务器:
服务器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代理程序作业,它将运行完成并且出现零错误。如何解决?
答案 0 :(得分:2)
您需要在服务器B上安装Oracle OLE DB驱动程序,服务器B在服务器B的内存中从服务器A运行程序包。如果那是一个专用的ETL框,你真的应该考虑在服务器A上安排和运行它们。