繁体   English   中英

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

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

我有一个 SQL Server 2008 R2 64 位,它使用 OraOLEDB.Z30162ED78B6C10F731411F2FC440C2F4 连接到 Oracle 12c 的服务器

当我使用 OPENQUERY 从 Oracle 链接服务器获取数据时,我收到以下错误消息:

链接服务器的 OLE DB 提供程序“OraOLEDB.Oracle”报告错误。 提供商报告了意外的灾难性故障。

无法从链接服务器的 OLE DB 提供程序“OraOLEDB.Oracle”获取行。

在 OraOLEDB.Oracle 提供程序选项中,选中了允许进行中。

此错误仅在我查询所有数据时发生,但如果我添加WHERE子句WHERE ROWNUM <100以限制为 99 行,则 go 不会出现问题。

这不会发生在具有相同环境的其他服务器上。

我已经尝试取消选中/重新选中 Allow Inprocess,但它没有用。 我尝试卸载现有的 Oracle 客户端并重新安装它,它也没有工作。

确保“用户”组对安装 Oracle 客户端的完整目录具有“读取和执行”、“列出文件夹内容”和“读取”权限。这就是为我解决的问题。

我在 SQLPlus 中也有一个查询工作正常,但是一旦我尝试使用链接服务器从 Toad 执行它,我就会遇到“灾难性失败”。 我也无法从 SSMS 中查看链接服务器的视图或表。 我终于回到了基础,检查了 Driver 目录的用户权限,它们到处都是。
我去了驱动器根目录下的基本文件夹,并检查了安全性,然后转到该选项卡中的“高级”。 然后,在“高级安全设置”中点击“更改权限”。 完成此操作后,将出现一个复选框“将所有子 object 权限条目替换为此 object 的可继承权限条目”选中该框并单击“确定

我验证了 SQLPlus 查询仍然有效,然后运行了所有失败的测试查询,它们现在都给出了结果。 我现在还可以在 SSMS 中查看表和视图。

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM