Compartir 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 sealed class SqlTransaction : System.Data.Common.DbTransaction
type SqlTransaction = class
    inherit DbTransaction
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Herencia
SqlTransaction

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.

using Microsoft.Data.SqlClient;

namespace Transaction1CS
{
    class Program
    {
        static void Main()
        {
            string connectionString =
                "Persist Security Info=False;Integrated Security=SSPI;database=Northwind;server=(local)";
            ExecuteSqlTransaction(connectionString);
            Console.ReadLine();
        }
        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

La aplicación crea un SqlTransaction objeto llamando BeginTransaction al 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/CatchEl control de excepciones siempre debe usarse al confirmar o revertir .SqlTransaction Tanto como CommitRollback generen si InvalidOperationException 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 codificación de transacciones eficaces.

Propiedades

Connection

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

IsolationLevel

Especifica IsolationLevel para esta transacción.

Métodos

Commit()

Confirma la transacción de base de datos.

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.

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.

Se aplica a