什么会导致链接服务器返回有限数量的数据?

时间:2013-02-10 03:25:48

标签: sql sql-server tsql sql-server-2012

我们遇到了与我们的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例如显示了所有需要返回的列,然后出现了immediatley错误。

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

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

enter image description here

1 个答案:

答案 0 :(得分:2)

选项1,禁用预取

有时,禁用预取将解决此类问题。

  

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

更多相关内容:

  

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

Source

选项2,允许进程

  • 转到“链接服务器”
  • 提供商
  • MSOLAP(或类似)
  • 属性
  • 确保启用“允许进程”。即使它是,请将其关闭。保存。然后再打开它。有时重置这可能会有所帮助。