Comparteix a través de


SqlTransaction Clase

Definición

Representa una transacción de Transact-SQL que se realiza en una base de datos de SQL Server. Esta clase no puede heredarse.

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

Ejemplos

En el ejemplo siguiente se crea un SqlConnection objeto y .SqlTransaction También muestra cómo usar los BeginTransactionmétodos , Commity Rollback . La transacción se revierte en cualquier error o si se elimina sin confirmarse primero. Try / Catch El control de errores se usa para controlar los errores al intentar confirmar o revertir la transacción.

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

Comentarios

La aplicación crea un SqlTransaction objeto llamando BeginTransaction a en el SqlConnection objeto . Todas las operaciones posteriores asociadas a la transacción (por ejemplo, confirmar o anular la transacción) se realizan en el SqlTransaction objeto .

Nota

Try / CatchSiempre se debe usar el control de excepciones al confirmar o revertir .SqlTransaction Tanto como CommitRollback generan un InvalidOperationException si la conexión finaliza o si la transacción ya se ha revertido en el servidor.

Para obtener más información sobre SQL Server transacciones, vea Transacciones explícitas y Codificar transacciones eficaces.

Propiedades

Connection

Obtiene el objeto SqlConnection asociado a la transacción o null si la transacción ya no es válida.

DbConnection

Cuando se invalida en una clase derivada, obtiene el objeto DbConnection asociado a la transacción.

(Heredado de DbTransaction)
IsolationLevel

Especifica IsolationLevel para esta transacción.

SupportsSavepoints

Obtiene un valor que indica si esta instancia de DbTransaction admite los puntos de retorno de la base de datos. Si false, se espera que los métodos SaveAsync(String, CancellationToken), RollbackAsync(String, CancellationToken) y ReleaseAsync(String, CancellationToken), así como sus contrapartes sincrónicas, generen NotSupportedException.

(Heredado de DbTransaction)

Métodos

Commit()

Confirma la transacción de base de datos.

CommitAsync(CancellationToken)

Confirma de forma asincrónica la transacción de base de datos.

(Heredado de DbTransaction)
CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
Dispose()

Libera los recursos que mantiene el objeto.

Dispose()

Libera los recursos no administrados que DbTransaction usa.

(Heredado de DbTransaction)
Dispose(Boolean)

Libera los recursos no administrados que usa DbTransaction y, de forma opcional, libera los recursos administrados.

(Heredado de DbTransaction)
DisposeAsync()

Desecha de forma asincrónica el objeto de transacción.

(Heredado de DbTransaction)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetLifetimeService()
Obsoletos.

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()
Obsoletos.

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.

(Heredado de MarshalByRefObject)
Release(String)

Destruye un punto de retorno anteriormente definido en la transacción actual. Esto permite al sistema reclamar algunos recursos antes de que finalice la transacción.

(Heredado de DbTransaction)
ReleaseAsync(String, CancellationToken)

Destruye un punto de retorno anteriormente definido en la transacción actual. Esto permite al sistema reclamar algunos recursos antes de que finalice la transacción.

(Heredado de DbTransaction)
Rollback()

Revierte una transacción desde un estado pendiente.

Rollback(String)

Deshace una transacción con un estado pendiente y especifica el nombre de la transacción o del punto de almacenamiento.

RollbackAsync(CancellationToken)

Revierte de forma asincrónica una transacción desde un estado pendiente.

(Heredado de DbTransaction)
RollbackAsync(String, CancellationToken)

Revierte todos los comandos que se ejecutaron después de que se estableció el punto de retorno.

(Heredado de DbTransaction)
Save(String)

Crea un punto de almacenamiento en la transacción que se puede utilizar para deshacer parte de la transacción, y especifica el nombre del punto de almacenamiento.

SaveAsync(String, CancellationToken)

Crea un punto de retorno en la transacción. Esto permite que se reviertan todos los comandos que se ejecutan después de que se estableció el punto de retorno, lo que restaura el estado de la transacción al estado que tenía en el momento del punto de retorno.

(Heredado de DbTransaction)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

IDbTransaction.Connection

Obtiene el objeto DbConnection asociado a la transacción o una referencia nula si la transacción ya no es válida.

(Heredado de DbTransaction)

Se aplica a

Consulte también