我们有一个旧的Windows 2000服务器上运行SQL Server 2000标准版,SP3。这有一个链接的服务器设置通过ODBC连接来连接到Informix数据库。对于大多数的一年,运行OPENQUERY对链接服务器没有任何问题的正常工作。 然而,每隔几个月此链接的服务器失败,并且直到SQL服务器重新启动后不会再工作。 我们在企业管理器中看到的错误是这样的:

---------------------------
SQL Server Enterprise Manager
---------------------------
Error 7399: OLE DB provider 'UNKNOWN' reported an error.  

Memory allocation failure.]
Memory allocation failure.]
OLE DB error trace [OLE/DB Provider 'UNKNOWN' IDBSchemaRowset::GetRowset returned 0x80004005:   ].
---------------------------
OK   
---------------------------

如果我尝试对运行在查询分析器中的链接服务器的任何SQL查询,报告的错误是这样的:

[OLE/DB provider returned message: Unspecified error]
OLE DB error trace [OLE/DB Provider 'MSDASQL'
IDBCreateCommand::CreateCommand returned 0x80004005:   ].
Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' reported an error.

如果我申请中引用的跟踪标志这里我得到一点点更详细地:

OLE DB error trace [Non-interface error:  OLE DB provider MSDASQL
returned an incorrect value for DBPROP_CONCATNULLBEHAVIOR which should
be either DBPROPVAL_CB_NULL or DBPROPVAL_CB_NON_NULL].
[OLE/DB provider returned message: Unspecified error]
OLE DB error trace [OLE/DB Provider 'MSDASQL'
IDBCreateCommand::CreateCommand returned 0x80004005:   ].
Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' reported an error.

这是什么会导致此任何想法?我们不知道任何服务器故障或变化来设置,并重新启动似乎总是解决这个问题。在Informix DB似乎是版本的Informix动态服务器2000 9.21.UC2,升级或修补它不能作为一个选项。

有帮助吗?

解决方案

注意IDS 9.21是长出来的支持 - 事实上,无论是9.30和9.40(IDS的后继版本)也出来支持。你是一个升级逾期多年,即使它看起来你不能真正做了升级出于政治原因。

这似乎是有内存泄漏的地方上的SQL Server端,也许在Informix ODBC驱动程序内存泄漏您使用造成的。

如果您不能升级任何东西,那么SQL Server的定期重启以清除累积的内存是最简单,最可靠的选择。既然你暗示它一次工作了几个月通常情况下,我想看看每月一次左右重新启动。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top