SQL Server 2000 Standard Edition、SP3を実行している古いWindows2000サーバーがあります。これには、ODBC接続を介してInformixDBに接続するためのリンクされたサーバー設定があります。1年のほとんどの間、リンクサーバーに対してOPENQUERYを実行すると、問題なく正常に動作します。ただし、数か月ごとにこのリンクサーバーに障害が発生し、SQLServerが再起動されるまで再び機能しません。EnterpriseManagerに表示されるエラーは次のとおりです。
---------------------------
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クエリを実行しようとすると、報告されるエラーは次のとおりです。
[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.
これを引き起こす可能性のあるアイデアはありますか?サーバーの障害や設定の変更は認識されておらず、再起動すると常にこれが修正されるようです。InformixDBはバージョンInformixDynamicServer 2000 9.21.UC2のようであり、アップグレードまたはパッチ適用はオプションとして使用できません。