SqlTransaction Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 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
- Herencia
- Herencia
- Herencia
- Implementaciones
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.
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
Comentarios
La aplicación crea un SqlTransaction objeto llamando BeginTransaction a en el 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
/
Catch
Siempre se debe usar el control de excepciones al confirmar o revertir .SqlTransaction Tanto como CommitRollback generan un InvalidOperationException si 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 Codificar transacciones eficaces.
Propiedades
Connection |
Obtiene el objeto SqlConnection asociado a la transacción o |
DbConnection |
Cuando se invalida en una clase derivada, obtiene el objeto DbConnection asociado a la transacción. (Heredado de DbTransaction) |
IsolationLevel |
Especifica IsolationLevel para esta transacción. |
SupportsSavepoints |
Obtiene un valor que indica si esta instancia de DbTransaction admite los puntos de retorno de la base de datos.
Si |
Métodos
Commit() |
Confirma la transacción de base de datos. |
CommitAsync(CancellationToken) |
Confirma de forma asincrónica la transacción de base de datos. (Heredado de DbTransaction) |
CreateObjRef(Type) |
Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Heredado de MarshalByRefObject) |
Dispose() |
Libera los recursos que mantiene el objeto. |
Dispose() |
Libera los recursos no administrados que DbTransaction usa. (Heredado de DbTransaction) |
Dispose(Boolean) |
Libera los recursos no administrados que usa DbTransaction y, de forma opcional, libera los recursos administrados. (Heredado de DbTransaction) |
DisposeAsync() |
Desecha de forma asincrónica el objeto de transacción. (Heredado de DbTransaction) |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetLifetimeService() |
Obsoletos.
Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Heredado de MarshalByRefObject) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
InitializeLifetimeService() |
Obsoletos.
Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Heredado de MarshalByRefObject) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
MemberwiseClone(Boolean) |
Crea una copia superficial del objeto MarshalByRefObject actual. (Heredado de MarshalByRefObject) |
Release(String) |
Destruye un punto de retorno anteriormente definido en la transacción actual. Esto permite al sistema reclamar algunos recursos antes de que finalice la transacción. (Heredado de DbTransaction) |
ReleaseAsync(String, CancellationToken) |
Destruye un punto de retorno anteriormente definido en la transacción actual. Esto permite al sistema reclamar algunos recursos antes de que finalice la transacción. (Heredado de DbTransaction) |
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. |
RollbackAsync(CancellationToken) |
Revierte de forma asincrónica una transacción desde un estado pendiente. (Heredado de DbTransaction) |
RollbackAsync(String, CancellationToken) |
Revierte todos los comandos que se ejecutaron después de que se estableció el punto de retorno. (Heredado de DbTransaction) |
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. |
SaveAsync(String, CancellationToken) |
Crea un punto de retorno en la transacción. Esto permite que se reviertan todos los comandos que se ejecutan después de que se estableció el punto de retorno, lo que restaura el estado de la transacción al estado que tenía en el momento del punto de retorno. (Heredado de DbTransaction) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Implementaciones de interfaz explícitas
IDbTransaction.Connection |
Obtiene el objeto DbConnection asociado a la transacción o una referencia nula si la transacción ya no es válida. (Heredado de DbTransaction) |