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 Transact-SQL que se va a realizar en una base de datos SQL Server. Esta clase no puede heredarse.
public ref class SqlTransaction sealed : MarshalByRefObject, IDisposable, System::Data::IDbTransaction
public ref class SqlTransaction sealed : System::Data::Common::DbTransaction
public sealed class SqlTransaction : MarshalByRefObject, IDisposable, System.Data.IDbTransaction
public sealed class SqlTransaction : System.Data.Common.DbTransaction
type SqlTransaction = class
inherit MarshalByRefObject
interface IDbTransaction
interface IDisposable
type SqlTransaction = class
inherit DbTransaction
Public NotInheritable Class SqlTransaction
Inherits MarshalByRefObject
Implements IDbTransaction, IDisposable
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
- Herencia
- Herencia
- Implementaciones
Ejemplos
En el ejemplo siguiente se crea un SqlConnection 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 por primera vez.
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 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 .
Note
Try
/
Catch El control de excepciones siempre debe usarse al confirmar o revertir un SqlTransaction. Tanto Commit como Rollback generen 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 las transacciones de SQL Server, vea Explicit Transactions y Coding Efficient Transactions.
Propiedades
| Nombre | Description |
|---|---|
| Connection |
Obtiene el SqlConnection objeto asociado a la transacción o |
| DbConnection |
Cuando se invalida en una clase derivada, obtiene el DbConnection objeto asociado a la transacción. (Heredado de DbTransaction) |
| IsolationLevel |
Especifica para IsolationLevel esta transacción. |
Métodos
| Nombre | Description |
|---|---|
| Commit() |
Confirma la transacción de base de datos. |
| CreateObjRef(Type) |
Crea un objeto que contiene toda la información pertinente necesaria para generar un proxy usado para comunicarse con un objeto remoto. (Heredado de MarshalByRefObject) |
| Dispose() |
Libera los recursos que mantiene el objeto . |
| Dispose() |
Libera los recursos no administrados usados por .DbTransaction (Heredado de DbTransaction) |
| Dispose(Boolean) |
Libera los recursos no administrados utilizados por DbTransaction y, opcionalmente, libera los recursos administrados. (Heredado de DbTransaction) |
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetHashCode() |
Actúa como la función hash predeterminada. (Heredado de Object) |
| GetLifetimeService() |
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() |
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 Objectactual. (Heredado de Object) |
| MemberwiseClone(Boolean) |
Crea una copia superficial del objeto actual MarshalByRefObject . (Heredado de MarshalByRefObject) |
| Rollback() |
Revierte una transacción desde un estado pendiente. |
| Rollback(String) |
Revierte una transacción desde un estado pendiente y especifica el nombre de la transacción o del punto de guardado. |
| Save(String) |
Crea un punto de guardado en la transacción que se puede usar para revertir una parte de la transacción y especifica el nombre del punto de retorno. |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IDbTransaction.Connection |
Obtiene el DbConnection objeto asociado a la transacción o una referencia nula si la transacción ya no es válida. (Heredado de DbTransaction) |