我正在尝试从Oracle服务器上的MS SQL server运行openrowset。
当我执行以下命令时:
select * from
OPENROWSET('OraOLEDB.Oracle','srv';'user';'pass',
'select * from table')
出现以下错误
Msg 7302, Level 16, State 1, Line 1
Cannot create an instance of OLE DB provider "OraOLEDB.Oracle" for linked server "(null)".
有人能告诉我如何在OraOLEDB.Oracle
中使用openrowset吗?
我使用的是64位版本的MS SQL Server和Oracle OLEDB驱动程序。
编辑
我已经在两台运行Windows7 x64和装有MS SQL Server2008 x64的Windows Server2008 x64的机器上试用过了。两者都显示了相同的错误消息。
发布于 2013-01-24 20:28:19
在SQL Server企业管理器中,打开\Server Objects\Linked Servers\Providers
,右键单击OraOLEDB.Oracle
提供程序,选择属性,然后选中"Allow inprocess"
选项。重新创建链接服务器并再次测试。
如果您没有访问SQL Server Management Studio的权限,也可以执行以下查询:
EXEC master.dbo.sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1
发布于 2016-01-14 20:27:26
特别是对于错误7302,当我在注册表中查找OraOLEDB.Oracle时,我发现InprocServer32位置是错误的。
如果是这种情况,或者您在注册表中找不到该字符串,则必须安装或重新注册该组件。
( ProgID作为一对链接到CLSID )。
然后,我通过在ORAOLEDB*.dll上调用regsvr32.exe重新注册了OraOLEDB.Oracle。
仅仅重新注册并不能解决问题,我必须删除注册表项以使其指向正确的位置。或者,破解InprocServer32的位置。
现在我有错误7308,关于单线程单元;继续!
发布于 2018-03-14 00:42:04
除了其他很好的响应之外,我只需要授予对Oracle安装文件夹的NTFS权限。(我授予了读取访问权限)
https://stackoverflow.com/questions/14499977
复制相似问题