Question

Nous avons un ancien serveur Windows 2000 exécutant SQL Server 2000 Standard Edition, SP3. Cela a une configuration de serveur lié pour se connecter à une base de données Informix via une connexion ODBC. Exécuter OPENQUERY sur le serveur lié fonctionne sans problème pendant la majeure partie de l’année. Cependant, ce serveur lié échoue tous les quelques mois et ne fonctionne plus tant que le serveur SQL n'est pas redémarré. L'erreur que nous voyons dans Enterprise Manager est la suivante:

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

Si j'essaie d'exécuter une requête SQL sur le serveur lié dans l'Analyseur de requêtes, l'erreur signalée est la suivante:

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

Si j'applique les indicateurs TRACE référencés ici , je reçois un peu plus de détail:

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.

Des idées sur ce qui pourrait causer cela? Nous ne sommes au courant d'aucune défaillance du serveur ni d'aucune modification des paramètres, et un redémarrage semble toujours résoudre ce problème. La base de données Informix semble être la version Informix Dynamic Server 2000 9.21.UC2, et sa mise à niveau ou sa correction ne sont pas disponibles en option.

Était-ce utile?

La solution

Sachez que depuis longtemps IDS 9.21 n’est plus pris en charge. En effet, les versions 9.30 et 9.40 (les versions suivantes de IDS) sont également indisponibles. Une mise à niveau est en retard depuis des années, même s'il semble que vous ne puissiez pas réellement effectuer la mise à niveau pour des raisons politiques.

Il semble qu'il y ait une fuite de mémoire quelque part côté SQL Server, probablement due à une fuite de mémoire dans le pilote ODBC Informix que vous utilisez.

Si vous ne pouvez rien mettre à niveau, alors un redémarrage périodique de SQL Server pour effacer la mémoire accumulée est l'option la plus simple et la plus fiable. Étant donné que vous sous-entendez que cela fonctionne habituellement pendant des mois, je vous conseillerais de redémarrer une fois par mois environ.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top