質問: VB2008 SQLServer2008 いつもお世話になっております。 今回、お尋ねしたいのは、 「トランザクションのトランザクションタイムアウトが画面遷移の一定時間、タイムアウトせずに耐えられるか」、です。 SqlCommandを使用して更新処理を実行していますが、 仕様上、トランザクション開始は親画面で実行し、 更新処理は親画面、子画面で実行されます。 Commit処理は親画面で一括処理します。 (各画面の表示情報はDBから取得(一時登録を含む)する仕様の為、各画面で登録・更新処理) SqlCommandでBeginTransactionした場合のトランザクションタイムアウト時間は いくつになるのでしょうか?また期限があるとしたら変更は可能でしょうか? もし、トランザクションタイムアウトが不可避であるならば、 回避する良い方法なども頂けたらと思います。 ※ SqlCommandのCommandTimeOutは”SQL実行時間”であり、 トランザクションタイムアウトの設定ではない、という認識です。 因みに、TransactionScopeは使用しない予定ですが、 TransactionScopeは10分以上は設定できないと解りました。 (machine.configの設定で延長可?) 以上、宜しくお願いします。 「TransactionScope」の有効性などもご教授頂けると助かります。 --- ■現状報告 まだ設計段階で引き続き調査中ですが、TransactionScopeのタイムアプト設定についていては出てきますが、 SqlCommandでのトランザクションタイムアウトについての記載が見つかりません。 ↓以下サイトで「SqlCommandではトランザクションタイムアウトは発生しない」、とあってのですが、その認識で正しいでしょうか? (トランザクションタイムアウトの設定はできない) https://social.msdn.microsoft.com/Forums/ja-JP/56e9f087-433f-498b-bf73-5dea5e48cd0b/sql-server-update-?forum=vbgeneralja
回答: トランザクションタイムアウトについては * トランザクションタイムアウト既定値1分 である 変更するには * アプリケーション構成ファイルに書く * TransactionScopeインスタンス作成時に指定する * マシン構成ファイルに書く(要管理権限) があり、10分を超えた値を指定したいときはマシン構成ファイルに書く必要がある という理解でよろしいかと あと > > 「TransactionScope」の有効性などもご教授頂けると助かります。 > > > System.Transactions.TransactionScope については * 複数のリソースをまたぐトランザクションの実行 につきると思います