l--*_*''' 5 sql t-sql sql-server sql-server-2012
我们遇到了与我们的sql server 2012实例链接的服务器的问题.
我们通过odbc或oledb连接链接的服务器是Pervasive SQL.
只要结果集很小,就可以通过这种方式从链接服务器中进行选择:
select * from linked_server.database..mytable
Run Code Online (Sandbox Code Playgroud)
如果结果集大于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".
Run Code Online (Sandbox Code Playgroud)
然而,愚蠢的是SSMS 2012例如显示了需要返回的所有列,然后出现了immediatley错误.
什么会导致SSMS 2012在结果集太大的情况下产生错误?(超过1-2mb)??
这是我在odbc管理员看到的内容:

有时,禁用预取可以解决此类问题。
您可以通过在创建 DSN 时清除“性能”选项卡中的“启用预取数据以进行查询”复选框来禁用预取,或者在创建无 DSN 连接时将“PREFETCH=0”添加到连接字符串中。
更多相关内容:
在服务器上的 ODBC 数据源管理器面板中,从系统 DSN 配置链接服务器。在“性能”选项卡下,取消选中“启用查询数据预取”框。好的好的。在 SQL Management Studio 中删除并重新创建链接服务器。
| 归档时间: |
|
| 查看次数: |
10223 次 |
| 最近记录: |