1

最近、DB2でクエリを実行し、対応する受信者にメールを送信するアプリケーションを開発しました。私たちのローカルシステムとQA地域でうまく機能します。しかし、プロダクションでは、(たとえそれがまれであっても、週に1回のように)クエリが失敗しました。それは以下の例外をスローします。DB2通信エラー

例外InnerDetails:

ERROR [40003] [IBM][CLI Driver] SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "111.111.111.111". Communication function detecting the error: "recv". Protocol specific error code(s): "10004", "", "". SQLSTATE=08001

エラーが頻繁にのみ生産で発生していないので、我々はそれがコードや設定の問題であるかどうか確認されていません。あなたは何か考えていますか?

+0

あなたはこれで決議しましたか?メインフレームのデータにアクセスするときにこの問題が断続的に発生し、通常はリトライロジックで終了します。 –

答えて

2

このエラー(SQL30081N)は、DB2クライアントとサーバーの間のネットワークの問題を示す一般的なメッセージに過ぎません。この場合、Protocol specific error code(s)を見たいと思っています。ここでは、Windows上にあるように見えますが、その特定のコード(10004)はIBMのマニュアルには記載されていません。あなたは、 "Windowsネットワークのエラーコードを" Googleの場合

そう、あなたがthis pageを見つけることができます、これは言う:

:その特定の機能の詳細については(強調鉱山)で this pageにリンク

WSAEINTR

10004

Interrupted function call.

A blocking operation was interrupted by a call to WSACancelBlockingCall. 

The WSACancelBlockingCall function has been removed in compliance with the Windows Sockets 2 specification, revision 2.2.0.

The function is not exported directly by WS2_32.DLL and Windows Sockets 2 applications should not use this function. Windows Sockets 1.1 applications that call this function are still supported through the WINSOCK.DLL and WSOCK32.DLL.

Blocking hooks are generally used to keep a single-threaded GUI application responsive during calls to blocking functions. Instead of using blocking hooks, an applications should use a separate thread (separate from the main GUI thread) for network activity.

私の推測では、アプリケーションが他の環境より長時間あなたのアプリケーションをブロックしている可能性があります。途中で何かが割り込みを引き起こしています。

がうまくいけば、これは我々は最近、私たちのIBMの担当者にこの問題を議論し

0

...正しい道を切りますをリードしています。内部知識ベースを調べた後、彼は、同じ問題を抱えている他の顧客に与えられた推奨事項に基づいて、接続文字列に "Interrupt = 0"を追加することを提案しました。

割り込みのデフォルト値は、v10.5 FP2より前では1でしたが、ほとんどの接続ではまだそのままです。 FP2のz/OS(メインフレーム)への接続では、デフォルト値を2に変更しました。

私たちはC#を使用しており、.NetのIBM Data Server Driverの接続文字列プロパティはhereです。私は他の言語のための彼らのドライバのための同様のプロパティがあると確信しています。

This page IBM docsの設定についてもう少し詳しく説明します。

私が最近プロパティを追加して以来、この問題は確認されていませんが、常に断続的なので、問題が修正されたとは確信できません。時間は教えてくれるでしょう...

関連する問題