Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

SqlConnection.BeginTransaction (Método) (IsolationLevel)

Inicia una transacción de base de datos con el nivel de aislamiento especificado.

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

public SqlTransaction BeginTransaction(
	IsolationLevel iso
)

Parámetros

iso
Tipo: System.Data.IsolationLevel
Nivel de aislamiento en el que tiene que ejecutarse la transacción.

Valor devuelto

Tipo: System.Data.SqlClient.SqlTransaction
Objeto que representa la nueva transacción.

ExcepciónCondición
SqlException

No se permiten transacciones paralelas cuando se utilizan Conjuntos de resultados activos múltiples (MARS).

InvalidOperationException

No se admiten transacciones paralelas.

Este comando se asigna a la implementación de SQL Server BEGIN TRANSACTION.

Se debe confirmar o deshacer explícitamente la transacción mediante el método Commit o Rollback. Para asegurarse de que el proveedor de datos de .NET Framework para el modelo de administración de transacciones de SQL Server realice correctamente, evite utilizar otros modelos de administración de la transacción, como el proporcionado por SQL Server.

NotaNota

Después de que una transacción se confirma o revierte, el nivel de aislamiento de la transacción conserva para todos los comandos posteriores que están en el modo de confirmación automática (el valor predeterminado de SQL Server ). Esto puede producir resultados imprevistos, por ejemplo, que se conserve un nivel de aislamiento REPEATABLE READ y se bloquee a los demás usuarios de una fila. Para restaurar el nivel de aislamiento en el valor predeterminado (LECTURA CONFIRMADA), ejecutar Transact-SQL SET la instrucción de la LECTURA CONFIRMADA de NIVEL OF AISLAMIENTO OF TRANSACTION o, la llamada SqlConnection.BeginTransaction seguido inmediatamente por SqlTransaction.Commit. Para obtener más información sobre los niveles de aislamiento de SQL Server , vea “niveles de aislamiento en el motor de base de datos” en los Libros en pantalla de SQL Server .

Para obtener más información sobre las transacciones de SQL Server , vea “transacciones explícitas” y “codificar las transacciones de Efficient” en los Libros en pantalla de SQL Server .

Nota de precauciónPrecaución

Cuando la consulta devuelve una gran cantidad de datos y llama BeginTransaction, se produce SqlException porque SQL Server no permite transacciones paralelas al utilizar MARTE. Para evitar este problema, asocie siempre una transacción al comando, a la conexión o a ambos elementos antes de que se abran los lectores.

En el siguiente ejemplo se crean un objeto SqlConnection y un objeto SqlTransaction. También se muestra cómo utilizar los métodos BeginTransaction, Commit y Rollback.


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(IsolationLevel.ReadCommitted);

        // 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();
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception e)
        {
            try
            {
                transaction.Rollback();
            }
            catch (SqlException ex)
            {
                if (transaction.Connection != null)
                {
                    Console.WriteLine("An exception of type " + ex.GetType() +
                        " was encountered while attempting to roll back the transaction.");
                }
            }

            Console.WriteLine("An exception of type " + e.GetType() +
                " was encountered while inserting the data.");
            Console.WriteLine("Neither record was written to database.");
        }
    }
}


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft