- PR -

トランザクション タイムアウトについて

1
投稿者投稿内容
Mr.CB
会議室デビュー日: 2004/05/13
投稿数: 17
投稿日時: 2005-09-10 17:51
お世話になっております。

現在、VB.NET2003+Oracle9iで開発を行っております。
ミドルウェアにはODP.NET、トランザクション処理には
COM+の自動トランザクションを利用しています。

処理の中で、長時間実行されるストアドプロシージャを
呼び出す部分があり、その処理が実行されると、
「操作がタイムアウトしました。」
とメッセージが表示されます。

COM+のトランザクション タイムアウト値をデフォルトの
60秒から大幅に変更したのですが、同じメッセージが表示
されます。
タイムアウト値を0に設定すると、トランザクションは
タイムアウトしないと説明があったので試してみたのですが
結果は同じでした。

タイムアウト値の変更は、コンポーネントサービス管理ツール
から行いましたが、変更が反映されなかった為、下記のように
トランザクション属性のタイムアウトプロパティを使用した
のですが、これも駄目でした。

<Transaction(TransactionOption.Required, Timeout:=0), _
JustInTimeActivation()>

何故、タイムアウト値が変更されないのかが分からず困って
おります。
どなたか、ご教授していただけないでしょうか?
よろしくお願いいたします。
kazaaa
会議室デビュー日: 2005/09/11
投稿数: 5
投稿日時: 2005-09-11 06:39
クエリータイムアウトでは?
壱丸3
常連さん
会議室デビュー日: 2004/09/13
投稿数: 34
投稿日時: 2005-09-12 11:44
おそらく、トランザクションのタイムアウトではなく別の何らかのタイムアウトじゃないですか?
発生している例外クラスから原因を特定できませんか?
Mr.CB
会議室デビュー日: 2004/05/13
投稿数: 17
投稿日時: 2005-09-16 10:38
kazaaa様、壱丸3様、返信ありがとうございます。
#返事が遅くなり申し訳ありませんでした。

調査した結果、Webサービス呼び出しのタイムアウト値を設定
することで、解決することができました。

私の説明が足りなかったのですが、Webサービス経由でDBに
アクセスしています。
当初、kazaaa様のご指摘どおりクエリータイムアウトだと思って
Oracle関連のタイムアウトを調査していたのですが解決できず、
この現象が発生してもOracleExceptionでcatchすることもできま
せんでした。

さらに調査を進めていくと、下記のURLを見つけたので試してみると
タイムアウトの現象が発生しなくなりました。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsdebug/html/vxgrftimeoutwhiledebuggingwebservices.asp


対応としては、Webサービス呼び出しに時間が掛かる場合、呼び出す
直前でWebサービスのTimeoutプロパティを"-1"に設定するようにしました。
"-1"に設定すると、Webサービス呼び出しのタイムアウト値を無限に
設定できるようです。

トランザクション タイムアウトの設定も必要かどうかは定かでは
ないのですが、こちらのタイムアウトは"0"に設定するようにしました。
"0"に設定すると、トランザクション タイムアウトが発生しないように
できるようです。

この対応が最適なのか確信がもてませんが、暫く様子をみることにしました。

お忙しいところ助言していただきありがとうございました。
今後ともよろしくお願いいたします。

1

スキルアップ/キャリアアップ(JOB@IT)