我们遇到了与我们的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管理员看到的内容:
答案 0 :(得分:2)
有时,禁用预取将解决此类问题。
您可以通过清除“启用预取数据”来禁用预取 对于查询“创建DSN时,”性能“选项卡中的复选框 在创建无DSN连接时,将“PREFETCH = 0”添加到连接字符串。
更多相关内容:
在服务器上的“ODBC数据源管理器”面板中,进行配置 来自System DSN的链接服务器。在“性能”选项卡下,取消选中 框''为查询启用预取数据'。好的好的。删除和 在SQL Management Studio中重新创建链接服务器。