2009-08-05 11 views
1

Wir haben einen alten Windows 2000-Server mit SQL Server 2000 Standard Edition, SP3. Dies hat ein Verbindungsserver-Setup, um über eine ODBC-Verbindung eine Verbindung zu einer Informix-Datenbank herzustellen. Fast das ganze Jahr über läuft OPENQUERY ohne Probleme mit dem verbundenen Server. Dieser Verbindungsserver schlägt jedoch alle paar Monate fehl und funktioniert erst wieder, wenn der SQL Server neu gestartet wird. Der Fehler, den wir in Enterprise Manager zu sehen, ist dies:Unbekannte Ursache für Fehler des Verbindungsservers

--------------------------- 
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 
--------------------------- 

Wenn ich versuche, jede SQL-Abfrage für den Verbindungsserver in Query Analyzer ausgeführt wird, berichtet der Fehler ist dies:

[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. 

Wenn ich die Anwendung TRACE Fahnen verwiesen here ich ein wenig näher kommen:

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. 

Alle Ideen, was könnte die Ursache sein? Uns sind keine Serverfehler oder Änderungen an den Einstellungen bekannt, und ein Neustart scheint dies immer zu beheben. Die Informix-Datenbank scheint die Version Informix Dynamic Server 2000 9.21.UC2 zu sein, und das Aktualisieren oder Patchen ist nicht als Option verfügbar.

Antwort

1

Beachten Sie, dass IDS 9.21 seit langem nicht mehr unterstützt wird - in der Tat sind sowohl 9.30 als auch 9.40 (die Nachfolgerversionen von IDS) ebenfalls nicht mehr unterstützt. Sie sind seit Jahren überfällig für ein Upgrade, auch wenn es scheint, dass Sie das Upgrade aus politischen Gründen nicht durchführen können.

Es scheint, dass irgendwo auf der SQL Server-Seite ein Speicherverlust vorliegt, der möglicherweise durch einen Speicherverlust im von Ihnen verwendeten Informix ODBC-Treiber verursacht wird.

Wenn Sie nichts aktualisieren können, ist ein periodischer Neustart von SQL Server zum Löschen des kumulierten Speichers die einfachste und zuverlässigste Option. Da du meinst, dass es normalerweise monatelang funktioniert, schaue ich mir einmal im Monat einen Neustart an.

+0

Ja, ich weiß, dass es effektiv veraltet ist. Ich hatte gehofft (wahrscheinlich umsonst), dass ich etwas tun könnte, um den Fehler zu beheben, der keinen Neustart und anschließende Unterbrechung anderer Anwendungen erforderte, die diesen Server verwenden. Aber ich werde jetzt sicherlich Vorbereitungen für regelmäßige Neustarts treffen. – MartW

+0

Es gibt nichts, was IBM/Informix mit dem veralteten System tun würde, außer Ihnen zu sagen, dass Sie upgraden müssen. Sie können möglicherweise eine neuere Version des ODBC-Treibers abrufen und diese zum Herstellen einer Verbindung mit dem alten Server verwenden. Dies hängt davon ab, wo sich IDS in Bezug auf den SQL Server befindet. Wenn sie sich auf demselben Rechner befinden, ist es möglicherweise schwieriger, dies zu erreichen - insbesondere mit der älteren Version, die Sie verwenden. Neuerer Code weist bessere Koexistenzeigenschaften auf - Sie können separate Kopien von ODBC für verschiedene Versionen auf demselben Computer haben. Wenn der SQL Server von IDS getrennt ist (auf einem anderen Computer), sollten Sie das ODBC aktualisieren. –