У нас есть старый сервер Windows 2000, работающий под управлением SQL Server 2000 Standard Edition, SP3. Это связано с настройкой сервера для подключения к базе данных Informix через соединение ODBC. Большую часть года запуск 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
---------------------------
Если я пытаюсь выполнить любой запрос SQL к связанному серверу в Query Analyzer, сообщается об ошибке:
[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.
Если я применю флаги TRACE, на которые ссылается здесь , я получу немного больше деталей:
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, и ее обновление или исправление недоступны в качестве опции.