Esta documentación está archivada y no tiene mantenimiento.

SqlTransaction (Clase)

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

Espacio de nombres: System.Data.SqlClient
Ensamblado: System.Data (en system.data.dll)

public sealed class SqlTransaction : DbTransaction
public final class SqlTransaction extends DbTransaction
public final class SqlTransaction extends DbTransaction

La aplicación crea un objeto SqlTransaction mediante una llamada a BeginTransaction en el objeto SqlConnection. Todas las operaciones siguientes asociadas a la transacción (por ejemplo, la confirmación o la interrupción de la transacción) se realizan en el objeto SqlTransaction.

NotaNota

Se debe utilizar siempre el control de excepciones Try/Catch al confirmar o deshacer SqlTransaction. Tanto Commit como Rollback generan una excepción InvalidOperationException cuando se termina la conexión o si la transacción ya se ha deshecho en el servidor.

Para obtener más información sobre las transacciones en SQL Server, vea "Explicit Transactions" y "Coding Efficient Transactions" en los Libros en pantalla de SQL Server 2005.

En el siguiente ejemplo se crean un objeto SqlConnection y un objeto SqlTransaction. Asimismo, se muestra el uso de los métodos BeginTransaction, Commit y Rollback. Al producirse cualquier error, la transacción se deshace. El control de errores Try/Catch se utiliza para ocuparse de cualquier error que se produzca al intentar confirmar o deshacer 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("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();
            }
            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);
            }
        }
    }
}

System.Object
   System.MarshalByRefObject
     System.Data.Common.DbTransaction
      System.Data.SqlClient.SqlTransaction

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
Mostrar: