Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 链接服务器错误的未知原因_Sql Server_Informix_Linked Server - Fatal编程技术网

Sql server 链接服务器错误的未知原因

Sql server 链接服务器错误的未知原因,sql-server,informix,linked-server,Sql Server,Informix,Linked Server,我们有一台运行SQLServer2000标准版SP3的旧Windows2000服务器。这有一个链接服务器设置,通过ODBC连接连接到Informix DB。一年中的大部分时间,对链接服务器运行OPENQUERY都可以正常工作,没有任何问题。 但是,每隔几个月,此链接服务器就会出现故障,并且在SQL server重新启动之前不会再次工作。 我们在Enterprise Manager中看到的错误是: --------------------------- SQL Server Enterprise

我们有一台运行SQLServer2000标准版SP3的旧Windows2000服务器。这有一个链接服务器设置,通过ODBC连接连接到Informix DB。一年中的大部分时间,对链接服务器运行OPENQUERY都可以正常工作,没有任何问题。 但是,每隔几个月,此链接服务器就会出现故障,并且在SQL server重新启动之前不会再次工作。 我们在Enterprise Manager中看到的错误是:

---------------------------
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   
---------------------------
[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.
如果我尝试在query Analyzer中对链接服务器运行任何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   
---------------------------
[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 Dynamic Server 2000 9.21.UC2,升级或修补它不是一个选项。

请注意,IDS 9.21长期不受支持,事实上,9.30和9.40(IDS的后续版本)也不受支持。您的升级已逾期多年,即使出于政治原因,您实际上无法进行升级

SQL Server端的某个地方似乎存在内存泄漏,这可能是由您正在使用的Informix ODBC驱动程序中的内存泄漏引起的


如果您无法升级任何内容,那么定期重新启动SQL Server以清除累积的内存是最简单、最可靠的选择。因为您暗示它通常一次工作几个月,所以我会考虑大约每月重新启动一次。

请注意,IDS 9.21长期不受支持,事实上,9.30和9.40(IDS的后续版本)也都不受支持。您的升级已逾期多年,即使出于政治原因,您实际上无法进行升级

SQL Server端的某个地方似乎存在内存泄漏,这可能是由您正在使用的Informix ODBC驱动程序中的内存泄漏引起的


如果您无法升级任何内容,那么定期重新启动SQL Server以清除累积的内存是最简单、最可靠的选择。因为您暗示它通常一次工作几个月,所以我会考虑大约每月重新启动一次。

是的,我知道它实际上已经过时了。我希望(可能是徒劳的)我可以做些什么来清除这个错误,而不需要重新启动并随后中断使用该服务器的其他应用程序。但是我现在肯定会安排定期重新启动。IBM/Informix除了告诉您升级之外,对这个过时的系统没有任何作用。您可能能够获得较新版本的ODBC驱动程序,并使用该驱动程序连接到旧服务器-这取决于IDS与SQL server的关系。如果它们在同一台机器上,那么实现起来可能会更困难,尤其是对于您正在使用的旧版本。较新的代码具有更好的共存属性—您可以在同一台计算机上为不同版本提供单独的ODBC副本。如果SQLServer与IDS(在不同的机器上)是分开的,请考虑升级ODBC。是的,我知道它已经过时了。我希望(可能是徒劳的)我可以做些什么来清除这个错误,而不需要重新启动并随后中断使用该服务器的其他应用程序。但是我现在肯定会安排定期重新启动。IBM/Informix除了告诉您升级之外,对这个过时的系统没有任何作用。您可能能够获得较新版本的ODBC驱动程序,并使用该驱动程序连接到旧服务器-这取决于IDS与SQL server的关系。如果它们在同一台机器上,那么实现起来可能会更困难,尤其是对于您正在使用的旧版本。较新的代码具有更好的共存属性—您可以在同一台计算机上为不同版本提供单独的ODBC副本。如果SQLServer与IDS(在不同的机器上)分离,请考虑升级ODBC。