暗黙のトランザクション

接続が暗黙のトランザクション モードで操作されている場合、SQL Server データベース エンジンのインスタンスでは、現在のトランザクションがコミットされるかロールバックされた後に新しいトランザクションが自動的に開始されます。トランザクションの開始を指定する必要はありません。各トランザクションをコミットするかロールバックするだけです。暗黙のトランザクション モードの場合、トランザクションが連鎖して生成されます。

接続に対して暗黙のトランザクション モードをオンに設定した後、データベース エンジンのインスタンスで次のステートメントのうちのどれかが最初に実行されると、トランザクションが自動的に開始されます。

ALTER TABLE

INSERT

CREATE

OPEN

DELETE

REVOKE

DROP

SELECT

FETCH

TRUNCATE TABLE

GRANT

UPDATE

COMMIT ステートメントまたは ROLLBACK ステートメントを実行するまで、トランザクションは有効です。最初のトランザクションがコミットされるかロールバックされた後、接続によりこれらのステートメントのいずれかが次に実行されると、データベース エンジンのインスタンスで新しいトランザクションが自動的に開始されます。このインスタンスは、暗黙のトランザクション モードがオフにされるまで暗黙のトランザクションの連鎖を生成し続けます。

暗黙のトランザクション モードを設定するには、Transact-SQL SET ステートメントまたはデータベースの API 関数とメソッドを使用します。

注意注意

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