我们有一台运行 SQL Server 2000 标准版 SP3 的旧 Windows 2000 服务器。这有一个链接服务器设置以通过 ODBC 连接连接到 Informix DB。在一年的大部分时间里,对链接服务器运行 OPENQUERY 可以正常工作,没有任何问题。但是,每隔几个月,此链接服务器就会出现故障,并且在重新启动 SQL Server 之前无法再次工作。我们在企业管理器中看到的错误是这样的:
---------------------------
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.
如果我应用此处引用的 TRACE 标志,我会得到更多详细信息:
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 Dynamic Server 2000 9.21.UC2 版本,升级或修补它不是一个选项。