Pregunta

Tenemos un antiguo servidor de Windows 2000 que ejecuta SQL Server 2000 Standard Edition, SP3. Esto tiene una configuración de servidor vinculado para conectarse a un DB de Informix a través de una conexión ODBC. Durante la mayor parte del año, ejecutar OPENQUERY en el servidor vinculado funciona bien sin ningún problema. Sin embargo, cada pocos meses este servidor vinculado falla y no vuelve a funcionar hasta que se reinicia SQL Server. El error que vemos en Enterprise Manager es este:

---------------------------
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 intento ejecutar cualquier consulta SQL en el servidor vinculado en el Analizador de consultas, el error informado es este:

[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 aplico las banderas TRACE a las que se hace referencia aquí obtengo un poco Más detalles:

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.

¿Alguna idea sobre qué podría causar esto? No tenemos conocimiento de fallas en el servidor o cambios en la configuración, y un reinicio siempre parece solucionar esto. El Informix DB parece ser la versión Informix Dynamic Server 2000 9.21.UC2, y su actualización o parcheo no está disponible como una opción.

¿Fue útil?

Solución

Tenga en cuenta que IDS 9.21 está fuera de soporte durante mucho tiempo; de hecho, tanto 9.30 como 9.40 (las versiones sucesoras de IDS) también están fuera de soporte. Tiene años de retraso para una actualización, aunque parece que en realidad no puede hacerlo por razones políticas.

Parece que hay una pérdida de memoria en algún lado del lado del servidor SQL, tal vez causada por una pérdida de memoria en el controlador ODBC Informix que está utilizando.

Si no puede actualizar nada, entonces un reinicio periódico de SQL Server para borrar la memoria acumulada es la opción más simple y confiable. Dado que implica que generalmente funciona durante meses a la vez, consideraría reiniciar una vez al mes más o menos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top