SQLServer2008を使用しています。を使用してFirebirdデータベースへのODBC接続を作成しましたFirebird/InterBase(r) driver
。
接続は正常に機能します。
次に、を使用してSQLServer2008でリンクサーバーを作成しましたMicrosoft OLE DB Provider for ODBC diver
。
すべてが正常に機能しているようです。を使用してテーブルからデータをプルできます
SELECT * FROM OPENQUERY(LINKEDSERVERNAME, 'SELECT * FROM TABLENAME')
成功しました。
私の問題は、リモートストアドプロシージャの呼び出しです。Firebird側には、1つの入力パラメーターを持つストアドプロシージャがあります。結果が出ることがありますが、ほとんどの場合、エラーが発生します。なぜ起こっているのかわかりませんが、エラーからはよくわかりません。
私はこのような手順を呼び出します:
SELECT * FROM OPENQUERY(LINKEDSERVERNAME, 'SELECT * FROM GET_DOCUMENT_S(05011002766916)'
結果(1行)を取得するか、エラーを取得します。ID 05011002766916iの場合は常に結果が得られますが、一部のIDの場合、結果が得られません。Firebird管理者でさえ、同じプロシージャ呼び出しがクライアントで通常どおり結果を返すと主張しています。
私が得ているエラーは次のとおりです。
メッセージ7399、レベル16、状態1、行1
リンクサーバー"LINKEDSERVERNAME"のOLEDBプロバイダー"MSDASQL"がエラーを報告しました。プロバイダーはエラーに関する情報を提供しませんでした。
メッセージ7321、レベル16、状態
2、1行目リンクサーバー「LINKEDSERVERNAME」のOLEDBプロバイダー「MSDASQL」に対して実行するクエリ「SELECT* FROM GET_DOCUMENT_S(04170200133A120)」の準備中にエラーが発生しました。
または:
メッセージ7399、レベル16、状態1、行1
リンクサーバー"LINKEDSERVERNAME"のOLEDBプロバイダー"MSDASQL"がエラーを報告しました。プロバイダーはエラーに関する情報を提供しませんでした。
メッセージ7330、レベル16、状態2、行1
リンクサーバー"LINKEDSERVERNAME"のOLEDBプロバイダー"MSDASQL"から行をフェッチできません。
現在、ODBC、リンクサーバー、またはFirebird側の問題であるかどうかはわかりませんが、誰かが問題の原因を説明できますか?
ありがとうございました。