明示的なトランザクション

明示的なトランザクションとは、トランザクションの開始と終了を明示的に定義したものです。

DB-Library アプリケーションと Transact-SQL スクリプトでは、BEGIN TRANSACTION、COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION、または ROLLBACK WORK のいずれかの Transact-SQL ステートメントを使用して明示的なトランザクションを定義します。

  • BEGIN TRANSACTION
    ある接続での明示的なトランザクションの開始位置をマークします。

  • COMMIT TRANSACTION または COMMIT WORK
    エラーが検出されなかった場合、トランザクションを正常に終了するために使用します。トランザクションで行われたデータ変更はすべて、データベースの一部として組み込まれます。トランザクションで保持されていたリソースは解放されます。

  • ROLLBACK TRANSACTION または ROLLBACK WORK
    エラーが検出されたトランザクションを消去するために使用します。そのトランザクションによって変更されたデータはすべて、トランザクションの開始時点の状態に戻ります。トランザクションで保持されていたリソースは解放されます。

明示的なトランザクションは、OLE DB でも使用できます。トランザクションを開始するには、ITransactionLocal::StartTransaction メソッドを呼び出します。別のトランザクションを自動的に開始せずにトランザクションを終了するには、fRetaining を FALSE に設定した状態で ITransaction::Commit メソッドまたは ITransaction::Abort メソッドのいずれかを呼び出します。

ADO では、明示的なトランザクションを開始するには、Connection オブジェクトで BeginTrans メソッドを使用します。トランザクションを終了するには、Connection オブジェクトの CommitTrans メソッドまたは RollbackTrans メソッドを呼び出します。

ADO.NET SqlClient マネージ プロバイダでは、明示的なトランザクションを開始するには、SqlConnection オブジェクトの BeginTransaction メソッドを使用します。トランザクションを終了するには、SqlTransaction オブジェクトの Commit() メソッドまたは Rollback() メソッドを呼び出します。

ODBC API では明示的なトランザクションがサポートされていません。自動コミットと暗黙のトランザクションだけがサポートされています。

明示的なトランザクション モードは、そのトランザクションの実行中だけ継続します。トランザクションが終了すると、接続は明示的なトランザクションを開始する前のトランザクション モード、つまり暗黙のトランザクション モードまたは自動コミット モードに戻ります。

注意

MARS (複数のアクティブな結果セット) セッションでは、Transact-SQL の BEGIN TRANSACTION ステートメントを使用して開始された明示的なトランザクションはバッチスコープのトランザクションになります。バッチの完了時にバッチをスコープとしたトランザクションがコミットまたはロールバックされていない場合、SQL Server により、トランザクションは自動的にロールバックされます。詳細については、「トランザクションの制御 (データベース エンジン)」および「トランザクション ステートメント (Transact-SQL)」を参照してください。