Partilhar via


SqlTransaction.Rollback Método

Definição

Reverte uma transação de um estado pendente.

Sobrecargas

Nome Description
Rollback()

Reverte uma transação de um estado pendente.

Rollback(String)

Reverte uma transação de um estado pendente e especifica o nome de ponto de salvamento ou da transação.

Rollback()

Origem:
System.Data.SqlClient.notsupported.cs

Reverte uma transação de um estado pendente.

public:
 override void Rollback();
public:
 virtual void Rollback();
public override void Rollback();
public void Rollback();
override this.Rollback : unit -> unit
abstract member Rollback : unit -> unit
override this.Rollback : unit -> unit
Public Overrides Sub Rollback ()
Public Sub Rollback ()

Implementações

Exceções

Ocorreu um erro ao tentar confirmar a transação.

A transação já foi confirmada ou revertida.

- ou -

A conexão foi desfeita.

Exemplos

O exemplo a seguir cria um SqlConnection e um SqlTransaction. Ele também demonstra como usar os BeginTransactionmétodos , Commite Rollback . A transação é revertida em qualquer erro. Try / Catch O tratamento de erros é usado para lidar com erros ao tentar confirmar ou reverter a transação.

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

Comentários

O Rollback método é equivalente à instrução TRANSact-SQL ROLLBACK TRANSACTION. Para obter mais informações, consulte ROLLBACK TRANSACTION (Transact-SQL) .

A transação só pode ser revertida de um estado pendente (depois BeginTransaction de ter sido chamada, mas antes Commit de ser chamada). A transação é revertida caso seja descartada antes Commit ou Rollback é chamada.

Observação

Try / Catch O tratamento de exceções sempre deve ser usado ao reverter uma transação. Um Rollback gera um InvalidOperationException se a conexão for encerrada ou se a transação já tiver sido revertida no servidor.

Para obter mais informações sobre transações SQL Server, consulte Transações (Transact-SQL).

Confira também

Aplica-se a

Rollback(String)

Origem:
System.Data.SqlClient.notsupported.cs

Reverte uma transação de um estado pendente e especifica o nome de ponto de salvamento ou da transação.

public:
 void Rollback(System::String ^ transactionName);
public void Rollback(string transactionName);
override this.Rollback : string -> unit
member this.Rollback : string -> unit
Public Sub Rollback (transactionName As String)

Parâmetros

transactionName
String

O nome da transação a ser revertida ou o ponto de salvamento para o qual reverter.

Exceções

Nenhum nome de transação foi especificado.

A transação já foi confirmada ou revertida.

- ou -

A conexão foi desfeita.

Exemplos

O exemplo a seguir cria um SqlConnection e um SqlTransaction. Ele também demonstra como usar os BeginTransactionmétodos , Commite Rollback . A transação é revertida em qualquer erro. Try / Catch O tratamento de erros é usado para lidar com erros ao tentar confirmar ou reverter a transação.

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);
            }
        }
    }
}
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("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 ex As Exception
            Console.WriteLine("Exception Type: {0}", ex.GetType())
            Console.WriteLine("  Message: {0}", ex.Message)

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

            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

Comentários

O Rollback método é equivalente à instrução TRANSact-SQL ROLLBACK TRANSACTION. Para obter mais informações, consulte Transações (Transact-SQL).

A transação só pode ser revertida de um estado pendente (depois BeginTransaction de ter sido chamada, mas antes Commit de ser chamada). A transação será revertida se for descartada antes Commit ou Rollback for chamada.

Observação

Try / Catch O tratamento de exceções sempre deve ser usado ao reverter uma transação. Um Rollback gera um InvalidOperationException se a conexão for encerrada ou se a transação já tiver sido revertida no servidor.

Para obter mais informações sobre transações SQL Server, consulte Transações (Transact-SQL).

Confira também

Aplica-se a