我们有一台运行SQL Server 2000标准版SP3的老式Windows 2000服务器。这有一个链接的服务器设置,通过ODBC连接连接到Informix数据库。一年中的大部分时间,对链接服务器运行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.
如果我申请了跟踪标志引用here我得到了更多的细节:
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的版本,升级或修补它不可用作为选项。
是的,我知道它已经过时了。我希望(可能是徒劳)会有一些事情可以做,以清除不需要重新启动的错误,并随后中断使用该服务器的其他应用程序。 但我现在肯定会定期重启。 – MartW 2009-08-05 15:58:59
除了要求升级外,IBM/Informix没有任何功能可以用于过时的系统。您可能能够获得更新版本的ODBC驱动程序,并使用它来连接到旧服务器 - 这取决于IDS与SQL Server的关系。如果他们在同一台机器上,那么实现起来可能会更棘手 - 尤其是对于您使用的旧版本。较新的代码具有更好的共存属性 - 您可以在同一台计算机上为不同版本的ODBC单独拷贝。如果SQL Server与IDS分开(在另一台计算机上),请考虑升级ODBC。 – 2009-08-05 17:20:35