トランザクションの有効期間

適用対象:SQL Server

Transact-SQL ストアド プロシージャで開始されたトランザクションとマネージド コードで開始されたトランザクションには重要な違いがあります。共通言語ランタイム (CLR) コードでは、CLR 呼び出しの開始または終了時にトランザクションの状態を不均衡にすることはできません。 この違いにより、次の点に注意してください。

  • CLR フレーム内で開始されたトランザクションはコミットまたはロールバックする必要があります。そうしないと、フレームの終了時にエラー SQL Server生成されます。

  • CLR コード内部から外部のトランザクションをコミットまたはロールバックすることはできません。

  • 同じプロシージャ内で開始されていないトランザクションをコミットしようとすると、実行時エラーが発生します。

  • 同じ手順で開始されていないトランザクションをロールバックしようとすると、トランザクションは応答を停止します (他の副作用操作が発生しないようにします)。 トランザクションは、CLR コードがスコープ外になるまで再開されません。 この動作は、プロシージャ内部でエラーを検出したときに、トランザクション全体を終了することが望ましい場合に役立つことがあります。

参照

CLR 統合とトランザクション