SqlTransaction クラス

定義

SQL Server データベースで作成する Transact-SQL トランザクションを表します。 このクラスは継承できません。

public ref class SqlTransaction sealed : System::Data::Common::DbTransaction
public ref class SqlTransaction sealed : MarshalByRefObject, IDisposable, System::Data::IDbTransaction
public ref class SqlTransaction sealed : System::Data::Common::DbTransaction, IDisposable
public sealed class SqlTransaction : System.Data.Common.DbTransaction
public sealed class SqlTransaction : MarshalByRefObject, IDisposable, System.Data.IDbTransaction
public sealed class SqlTransaction : System.Data.Common.DbTransaction, IDisposable
type SqlTransaction = class
    inherit DbTransaction
type SqlTransaction = class
    inherit MarshalByRefObject
    interface IDbTransaction
    interface IDisposable
type SqlTransaction = class
    inherit DbTransaction
    interface IDbTransaction
    interface IDisposable
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Public NotInheritable Class SqlTransaction
Inherits MarshalByRefObject
Implements IDbTransaction, IDisposable
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Implements IDisposable
継承
SqlTransaction
継承
継承
SqlTransaction
実装

次の例では、SqlConnectionSqlTransaction. また、メソッドの使用方法BeginTransactionCommitRollbackについても説明します。 トランザクションは、エラーに対してロールバックされるか、最初にコミットされずに破棄された場合にロールバックされます。 Try/Catch エラー処理は、トランザクションをコミットまたはロールバックしようとしたときにエラーを処理するために使用されます。

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction();

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();

            // Attempt to commit the transaction.
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
            Console.WriteLine("  Message: {0}", ex.Message);

            // Attempt to roll back the transaction.
            try
            {
                transaction.Rollback();
            }
            catch (Exception ex2)
            {
                // This catch block will handle any errors that may have occurred
                // on the server that would cause the rollback to fail, such as
                // a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                Console.WriteLine("  Message: {0}", ex2.Message);
            }
        }
    }
}
Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction()

        ' Must assign both transaction object and connection
        ' to Command object for a pending local transaction.
        command.Connection = connection
        command.Transaction = transaction

        Try
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
            command.ExecuteNonQuery()
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"

            command.ExecuteNonQuery()

            ' Attempt to commit the transaction.
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")

        Catch ex As Exception
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
            Console.WriteLine("  Message: {0}", ex.Message)

            ' Attempt to roll back the transaction.
            Try
                transaction.Rollback()

            Catch ex2 As Exception
                ' This catch block will handle any errors that may have occurred
                ' on the server that would cause the rollback to fail, such as
                ' a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
                Console.WriteLine("  Message: {0}", ex2.Message)
            End Try
        End Try
    End Using
End Sub

注釈

アプリケーションは、オブジェクトを SqlTransaction 呼び出 BeginTransaction してオブジェクトを SqlConnection 作成します。 トランザクションに関連付けられている後続のすべての操作 (トランザクションのコミットや中止など) は、オブジェクトに対して SqlTransaction 実行されます。

注意

Try/Catch 例外処理は、常にコミットまたはロールバック SqlTransactionするときに使用する必要があります。 両方 Commit とも、 Rollback 接続が終了した場合、またはトランザクションがサーバーで既にロールバックされている場合に生成 InvalidOperationException されます。

SQL Serverトランザクションの詳細については、「明示的なトランザクション効率的なトランザクションのコーディング」を参照してください。

プロパティ

Connection

トランザクションに関連付けられた SqlConnection オブジェクトを取得します。トランザクションが既に無効になっている場合は、null が返されます。

DbConnection

派生クラス内でオーバーライドされた場合、トランザクションに関連付けられている DbConnection オブジェクトを取得します。

(継承元 DbTransaction)
IsolationLevel

このトランザクションの IsolationLevel を指定します。

SupportsSavepoints

この DbTransaction インスタンスでデータベースのセーブポイントがサポートされているかどうかを示す値を取得します。 false の場合、メソッド SaveAsync(String, CancellationToken)RollbackAsync(String, CancellationToken)ReleaseAsync(String, CancellationToken) およびそれらの同期版では NotSupportedException がスローされることが想定されます。

(継承元 DbTransaction)

メソッド

Commit()

データベース トランザクションをコミットします。

CommitAsync(CancellationToken)

データベース トランザクションを非同期にコミットします。

(継承元 DbTransaction)
CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。

(継承元 MarshalByRefObject)
Dispose()

オブジェクトによって保持されているリソースを解放します。

Dispose()

DbTransaction で使用されるアンマネージ リソースを解放します。

(継承元 DbTransaction)
Dispose(Boolean)

DbTransaction によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。

(継承元 DbTransaction)
DisposeAsync()

トランザクション オブジェクトを非同期に破棄します。

(継承元 DbTransaction)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetLifetimeService()
互換性のために残されています。

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
InitializeLifetimeService()
互換性のために残されています。

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。

(継承元 MarshalByRefObject)
Release(String)

現在のトランザクションで以前に定義されたセーブポイントを破棄します。 これにより、システムによってトランザクションが終了する前にリソースの一部を再利用できます。

(継承元 DbTransaction)
ReleaseAsync(String, CancellationToken)

現在のトランザクションで以前に定義されたセーブポイントを破棄します。 これにより、システムによってトランザクションが終了する前にリソースの一部を再利用できます。

(継承元 DbTransaction)
Rollback()

トランザクションを保留状態からロールバックします。

Rollback(String)

トランザクションまたはセーブポイントの名前を指定して、トランザクションを保留中の状態からロールバックします。

RollbackAsync(CancellationToken)

トランザクションを保留状態から非同期にロールバックします。

(継承元 DbTransaction)
RollbackAsync(String, CancellationToken)

指定したセーブポイントが確立された後に実行されたすべてのコマンドをロールバックします。

(継承元 DbTransaction)
Save(String)

セーブポイントの名前を指定して、トランザクション内にセーブポイントを作成します。セーブポイントは、トランザクションを部分的にロールバックするために使用できます。

SaveAsync(String, CancellationToken)

トランザクションにセーブポイントを作成します。 これにより、セーブポイントが確立された後に実行されるすべてのコマンドがロールバックされ、トランザクションの状態がセーブポイントの時点の状態に復元されます。

(継承元 DbTransaction)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

明示的なインターフェイスの実装

IDbTransaction.Connection

トランザクションに関連付けられた DbConnection オブジェクト、またはトランザクションが無効になった場合に null 参照を取得します。

(継承元 DbTransaction)

適用対象

こちらもご覧ください