Leer en inglés

Compartir vía


SqlTransaction.Rollback Método

Definición

Revierte una transacción desde un estado pendiente.

Sobrecargas

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.

Rollback()

Source:
System.Data.SqlClient.notsupported.cs

Revierte una transacción desde un estado pendiente.

C#
public override void Rollback();
C#
public void Rollback();

Implementaciones

Excepciones

Error al intentar confirmar la transacción.

Ya se confirmó o revirtió la transacción.

O bien

Se interrumpió la conexión.

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. Try / Catch El control de errores se usa para controlar los errores al intentar confirmar o revertir la transacción.

C#
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);
            }
        }
    }
}

Comentarios

El Rollback método es equivalente a la instrucción ROLLBACK TRANSACTION de Transact-SQL. Para obtener más información, vea ROLLBACK TRANSACTION (Transact-SQL).

La transacción solo se puede revertir desde un estado pendiente (después BeginTransaction de llamar a , pero antes Commit de llamar). La transacción se revierte en caso de que se elimine antes Commit o Rollback se llame a .

Nota

Try / Catch Siempre se debe usar el control de excepciones al revertir una transacción. Genera Rollback un InvalidOperationException valor 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 (Transact-SQL).

Consulte también

Se aplica a

.NET 10 (package-provided) otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, 6 (package-provided), 7 (package-provided), 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)

Rollback(String)

Source:
System.Data.SqlClient.notsupported.cs

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

C#
public void Rollback(string transactionName);

Parámetros

transactionName
String

Nombre de la transacción que se va a deshacer o punto de guardado en el que se va a deshacer.

Excepciones

No se ha especificado ningún nombre de transacción.

Ya se confirmó o revirtió la transacción.

O bien

Se interrumpió la conexión.

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. Try / Catch El control de errores se usa para controlar los errores al intentar confirmar o revertir la transacción.

C#
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("SampleTransaction");
            }
            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);
            }
        }
    }
}

Comentarios

El Rollback método es equivalente a la instrucción ROLLBACK TRANSACTION de Transact-SQL. Para obtener más información, vea Transacciones (Transact-SQL).

La transacción solo se puede revertir desde un estado pendiente (después BeginTransaction de llamar a , pero antes Commit de llamar). La transacción se revierte si se elimina antes Commit o Rollback se llama a .

Nota

Try / Catch Siempre se debe usar el control de excepciones al revertir una transacción. Genera Rollback un InvalidOperationException valor 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 (Transact-SQL).

Consulte también

Se aplica a

.NET 10 (package-provided) otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, 6 (package-provided), 7 (package-provided), 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)