SqlTransaction Class
Represents a Transact-SQL transaction to be made in a SQL Server database. This class cannot be inherited.
System.MarshalByRefObject
System.Data.Common.DbTransaction
System.Data.SqlClient.SqlTransaction
Namespace: System.Data.SqlClient
Assembly: System.Data (in System.Data.dll)
The SqlTransaction type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | Connection | Gets the SqlConnection object associated with the transaction, or null if the transaction is no longer valid. |
![]() | IsolationLevel | Specifies the IsolationLevel for this transaction. (Overrides DbTransaction.IsolationLevel.) |
| Name | Description | |
|---|---|---|
![]() | Commit | Commits the database transaction. (Overrides DbTransaction.Commit().) |
![]() | CreateObjRef | Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.) |
![]() | Dispose() | Releases the unmanaged resources used by the DbTransaction. (Inherited from DbTransaction.) |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object. (Inherited from Object.) |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetLifetimeService | Retrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | InitializeLifetimeService | Obtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.) |
![]() | Rollback() | Rolls back a transaction from a pending state. (Overrides DbTransaction.Rollback().) |
![]() | Rollback(String) | Rolls back a transaction from a pending state, and specifies the transaction or savepoint name. |
![]() | Save | Creates a savepoint in the transaction that can be used to roll back a part of the transaction, and specifies the savepoint name. |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
| Name | Description | |
|---|---|---|
![]() ![]() | IDbTransaction.Connection | Gets the DbConnection object associated with the transaction, or a null reference if the transaction is no longer valid. (Inherited from DbTransaction.) |
The application creates a SqlTransaction object by calling BeginTransaction on the SqlConnection object. All subsequent operations associated with the transaction (for example, committing or aborting the transaction), are performed on the SqlTransaction object.
Note |
|---|
Try/Catch exception handling should always be used when committing or rolling back a SqlTransaction. Both Commit and Rollback generate an InvalidOperationException if the connection is terminated or if the transaction has already been rolled back on the server. |
For more information on SQL Server transactions, see Explicit Transactions and Coding Efficient Transactions.
The following example creates a SqlConnection and a SqlTransaction. It also demonstrates how to use the BeginTransaction, Commit, and Rollback methods. The transaction is rolled back on any error, or if it is disposed without first being committed. Try/Catch error handling is used to handle any errors when attempting to commit or roll back the transaction.
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("SampleTransaction"); // 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); } } } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

