Неизвестная причина ошибки связанного сервера - PullRequest
1 голос
/ 05 августа 2009

У нас есть старый сервер 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, и ее обновление или исправление недоступны в качестве опции.

1 Ответ

1 голос
/ 05 августа 2009

Имейте в виду, что IDS 9.21 давно не поддерживается - действительно, 9.30 и 9.40 (последующие версии IDS) также не поддерживаются. Для обновления у вас много лет, хотя кажется, что вы не можете выполнить обновление по политическим причинам.

Похоже, что где-то на стороне SQL Server произошла утечка памяти, возможно, вызванная утечкой памяти в используемом вами драйвере ODBC Informix.

Если вы не можете ничего обновить, то периодическая перезагрузка SQL Server для очистки накопленной памяти является самым простым и надежным вариантом. Поскольку вы подразумеваете, что это обычно работает месяцами, я бы посмотрел на перезагрузку раз в месяц или около того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...