- PR -

WindowsServer2003でのトランザクション制御

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/08/23
投稿数: 23
投稿日時: 2004-09-29 18:11
お世話になっております。

【環境構成】
OS :Windows Server 2003 Standard
DBMS:SQL Server 2000 Standard
Web :ASP2.0

【問題点】
異常終了時に、トランザクション開始時点までロールバックされない。
(ステートメント単位でのコミットがかかってしまう)

【これまでの調査】
・VB6.0で作成したバッチからだと、トランザクションの制御が可能。
・問題の事象はASPよりCOM+(TransactionContext)を呼び出して
 トランザクション制御をかけようとする場合にのみ発生。

以上から推測されるのは、2003ServerとASP2.0の相性が問題かとも思うのですが、
対策方法がわかりません。

どなたかご教授ねがえればと思います。よろしくお願いします。
なし
会議室デビュー日: 2004/09/17
投稿数: 17
投稿日時: 2004-09-29 18:47
トランザクションモードが、自動コミットモードになっているのではないでしょうか?
SQLサーバーの既定の設定は自動コミットモードだそうです。
未記入
常連さん
会議室デビュー日: 2004/08/23
投稿数: 23
投稿日時: 2004-09-30 09:34
早速の返答ありがとうございます。

>トランザクションモードが、自動コミットモードになっているのではないでしょうか?
>SQLサーバーの既定の設定は自動コミットモードだそうです。

確かに既定は自動コミットモードなのですが、
現状はASPより明示的にトランザクションの開始・終了を指定しています。
明示的にトランザクションを開始した場合は規定の自動コミットモードを上書きするようなので、ASPからのトランザクション開始・終了をSQLServerが認識できていない
ことが原因なのかと思います。

ASP2.0でのコーディングは以下の通りです。

Set objTxCtx = Server.CreateObject("TxCtx.transactioncontext")
<!-- トランザクション開始 -->

objTxCtx.commit
<!-- トランザクションコミット -->

objTxCtx.abort
<!-- トランザクションアボート -->
1

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