简体   繁体   English

如何修复错误“灾难性故障。无法从链接服务器的 OLE DB 提供程序“OraOLEDB.Oracle”获取行”

[英]How to fix error "Catastrophic failure. Cannot fetch a row from OLE DB provider "OraOLEDB.Oracle" for linked server"

I have a SQL Server 2008 R2 64-bit with a linked server to Oracle 12c using OraOLEDB.Oracle provider.我有一个 SQL Server 2008 R2 64 位,它使用 OraOLEDB.Z30162ED78B6C10F731411F2FC440C2F4 连接到 Oracle 12c 的服务器

When I fetch data from the Oracle linked server using OPENQUERY, I am receiving the following error message:当我使用 OPENQUERY 从 Oracle 链接服务器获取数据时,我收到以下错误消息:

The OLE DB provider "OraOLEDB.Oracle" for linked server reported an error.链接服务器的 OLE DB 提供程序“OraOLEDB.Oracle”报告错误。 The provider reported an unexpected catastrophic failure.提供商报告了意外的灾难性故障。

Cannot fetch a row from OLE DB provider "OraOLEDB.Oracle" for linked server.无法从链接服务器的 OLE DB 提供程序“OraOLEDB.Oracle”获取行。

In OraOLEDB.Oracle provider options, Allow Inprocess is checked.在 OraOLEDB.Oracle 提供程序选项中,选中了允许进行中。

This error only happens when I queried all data, but if I add a WHERE clause WHERE ROWNUM <100 to limit to 99 rows, it would go without issue.此错误仅在我查询所有数据时发生,但如果我添加WHERE子句WHERE ROWNUM <100以限制为 99 行,则 go 不会出现问题。

This does not happen to other servers with the same environment.这不会发生在具有相同环境的其他服务器上。

I have tried uncheck/re-check Allow Inprocess, but it didnt work.我已经尝试取消选中/重新选中 Allow Inprocess,但它没有用。 I tried uninstall the existing Oracle client and reinstall it, and it didnt work either.我尝试卸载现有的 Oracle 客户端并重新安装它,它也没有工作。

Make sure the "Users" group has "Read & execute", "List Folder contents" and "Read" permissions to the complete directory your Oracle Client is installed in. That is what fixed it for me.确保“用户”组对安装 Oracle 客户端的完整目录具有“读取和执行”、“列出文件夹内容”和“读取”权限。这就是为我解决的问题。

I was also having a query work fine in SQLPlus, but as soon as I tried to execute it from Toad using the Linked Server, I would get that "catastrophic failure".我在 SQLPlus 中也有一个查询工作正常,但是一旦我尝试使用链接服务器从 Toad 执行它,我就会遇到“灾难性失败”。 I was also not able to see views or tables for the Linked Server from within SSMS.我也无法从 SSMS 中查看链接服务器的视图或表。 I finally went back to basics, and checked user permissions on the Driver directory, and they were all over the place.我终于回到了基础,检查了 Driver 目录的用户权限,它们到处都是。
I went to the base folder just off the root of the drive, and checked Security, then went to " Advanced " in that Tab.我去了驱动器根目录下的基本文件夹,并检查了安全性,然后转到该选项卡中的“高级”。 Then, in the " Advanced Security Settings " Clicked on the " Change Permissions ".然后,在“高级安全设置”中点击“更改权限”。 Once you do that, there is a check box to " Replace all child object permission entries with inheritable permission entries from this object " Check that box and Click " OK "完成此操作后,将出现一个复选框“将所有子 object 权限条目替换为此 object 的可继承权限条目”选中该框并单击“确定

I verified the SQLPlus query still worked, then ran all of my test queries that were failing, and they all now gave results.我验证了 SQLPlus 查询仍然有效,然后运行了所有失败的测试查询,它们现在都给出了结果。 I am also now able to see Tables & Views in SSMS.我现在还可以在 SSMS 中查看表和视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 链接服务器[ORA]的OLE DB提供程序[OraOLEDB.Oracle]返回了消息ORA-00936:缺少表达式 - OLE DB provider [OraOLEDB.Oracle] for linked server [ORA] returned message ORA-00936: missing expression 错误:无法从OLE DB提供程序“ADsDSOObject”获取链接服务器“ADSI”的行 - Error : Cannot fetch a row from OLE DB provider “ADsDSOObject” for linked server “ADSI” 无法从链接服务器的OLE DB提供程序“ MSDASQL”获取列“ [MSDASQL] .LONG_DESCRIPTION”的当前行值:-NETSUITE - Cannot get the current row value of column “[MSDASQL].LONG_DESCRIPTION” from OLE DB provider “MSDASQL” for linked server :--NETSUITE 链接服务器无法初始化 OLE DB 提供程序的数据源对象 - Linked server Cannot initialize the data source object of OLE DB provider 使用链接服务器返回错误-“无法获取OLE DB提供程序的架构行集” - Using linked server returns error - “Cannot obtain the schema rowset for OLE DB provider” 链接服务器的OLE DB提供程序报告了架构版本错误 - OLE DB provider for linked server reported a change in schema version Error 尝试从链接服务器中选择的灾难性故障 - catastrophic failure trying to select from linked server 链接服务器“(null)”的OLE DB提供程序“ MSDASQL”报告错误 - The OLE DB provider “MSDASQL” for linked server “(null)” reported an error 链接服务器“(null)”的 OLE DB 提供程序“MSDASQL”无法更新表“[MSDASQL]”。 Pervasive 的未知提供程序错误 - The OLE DB provider "MSDASQL" for linked server "(null)" could not UPDATE table "[MSDASQL]". Unknown provider error with Pervasive 无法为链接服务器初始化OLE DB提供程序“ Microsoft.ACE.OLEDB.12.0”的数据源对象 - Cannot initialize the data source object of OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM