Compartilhar via


SqlTransaction Classe

Definição

Representa uma transação Transact-SQL a ser feita em um banco de dados do SQL Server. Essa classe não pode ser herdada.

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
Herança
SqlTransaction
Herança
Herança
SqlTransaction
Implementações

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 ou se for descartada sem primeiro ser confirmada. 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 aplicativo cria um SqlTransaction objeto chamando BeginTransaction no SqlConnection objeto . Todas as operações subsequentes associadas à transação (por exemplo, confirmar ou anular a transação) são executadas no SqlTransaction objeto .

Observação

Try / Catch O tratamento de exceções sempre deve ser usado ao confirmar ou reverter um SqlTransaction. E CommitRollback geram 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 explícitas e transações eficientes de codificação.

Propriedades

Connection

Obtém o objeto SqlConnection associado à transação ou null, se a transação não for mais válida.

DbConnection

Quando substituído em uma classe derivada, obtém o objeto DbConnection associado à transação.

(Herdado de DbTransaction)
IsolationLevel

Especifica o IsolationLevel para essa transação.

SupportsSavepoints

Obtém um valor que indica se esta instância de DbTransaction dá suporte para pontos de salvamento do banco de dados. Se false, os métodos SaveAsync(String, CancellationToken), RollbackAsync(String, CancellationToken) e ReleaseAsync(String, CancellationToken), bem como seus correspondentes síncronos, deverão lançar NotSupportedException.

(Herdado de DbTransaction)

Métodos

Commit()

Confirma a transação do banco de dados.

CommitAsync(CancellationToken)

Confirma de maneira assíncrona a transação de banco de dados.

(Herdado de DbTransaction)
CreateObjRef(Type)

Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
Dispose()

Libera os recursos que são mantidos pelo objeto.

Dispose()

Libera os recursos não gerenciados usados pelo DbTransaction.

(Herdado de DbTransaction)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo DbTransaction e opcionalmente libera os recursos gerenciados.

(Herdado de DbTransaction)
DisposeAsync()

Descarta de forma assíncrona o objeto da transação.

(Herdado de DbTransaction)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetLifetimeService()
Obsoleto.

Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância.

(Herdado de MarshalByRefObject)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeLifetimeService()
Obsoleto.

Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância.

(Herdado de MarshalByRefObject)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto MarshalByRefObject atual.

(Herdado de MarshalByRefObject)
Release(String)

Destrói um ponto de salvamento definido anteriormente na transação atual. Isso permite que o sistema recupere alguns recursos antes do término da transação.

(Herdado de DbTransaction)
ReleaseAsync(String, CancellationToken)

Destrói um ponto de salvamento definido anteriormente na transação atual. Isso permite que o sistema recupere alguns recursos antes do término da transação.

(Herdado de DbTransaction)
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.

RollbackAsync(CancellationToken)

Reverte de maneira assíncrona uma transação de um estado pendente.

(Herdado de DbTransaction)
RollbackAsync(String, CancellationToken)

Reverte todos os comandos que foram executados após o estabelecimento do ponto de salvamento especificado.

(Herdado de DbTransaction)
Save(String)

Cria um ponto de salvamento na transação, que pode ser usado para reverter uma parte da transação e especifica o nome do ponto de salvamento.

SaveAsync(String, CancellationToken)

Cria um ponto de salvamento na transação. Isso permite que todos os comandos executados após e estabelecimento do ponto de salvamento sejam revertidos, restaurando o estado da transação para o que era no momento do salvamento.

(Herdado de DbTransaction)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

IDbTransaction.Connection

Obtém o objeto DbConnection associado à transação ou uma referência nula, se a transação não for mais válida.

(Herdado de DbTransaction)

Aplica-se a

Confira também