5

我们链接到 sql server 2012 实例的服务器出现问题。

我们通过 odbc 或 oledb 连接链接的服务器是 Pervasive SQL。

只要结果集很小,就可以通过这种方式从链接服务器中进行选择:

select * from linked_server.database..mytable

如果结果集超过2mb左右(可能略多或少),那么我们会收到以下错误:

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "MSDASQL" for linked server "KSLAP208" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "KSLAP208".

然而,愚蠢的是,例如 SSMS 2012 会显示所有需要返回的列,然后立即出错。

什么会导致 SSMS 2012 在太大的结果集上产生错误?(超过 1-2mb)??

这是我在 odbc 管理员中看到的:

在此处输入图像描述

4

1 回答 1

2

选项 1,禁用预取

有时,禁用预取会解决这样的问题。

您可以通过在创建 DSN 时清除“性能”选项卡中的“为查询启用数据预取”复选框或在创建无 DSN 连接时将“PREFETCH=0”添加到连接字符串来禁用预取。

更多关于这个:

在服务器上的 ODBC 数据源管理器面板中,从系统 DSN 配置您的链接服务器。在“性能”选项卡下,取消选中“为查询启用数据预取”框。好的好的。在 SQL Management Studio 中删除并重新创建链接服务器。

来源

选项 2,允许进程内

  • 转到链接服务器
  • 提供者
  • MSOLAP(或类似)
  • 特性
  • 确保启用“允许进程内”。即使是,也请关闭它。节省。然后重新打开它。有时重置它会有所帮助。
于 2013-02-10T03:31:11.137 回答