Procesamiento de Transacciones Propiedades ACID Modelos de Transacciones Creación de Transacciones en ADO.NET Una Transacción es un conjunto de tareas relacionadas que se realizan de forma satisfactoria o incorrecta como una unidad. En términos de procesamiento, las transacciones se confirman o se anulan. Para que una transacción se confirme, todos los participantes deben garantizar la permanencia de los cambios efectuados en los datos. Los cambios deben conservarse aunque el sistema se bloquee o tengan lugar otros eventos imprevistos. Propiedades ACID ACID Expresa la función que las transacciones desarrollan en aplicaciones críticas para una misión. Atomicity (Atomicidad) Consistency (Consistencia) Isolation (Aislamiento) Durability (Permanencia) Una Transacción se ejecuta exactamente una vez y tiene carácter atómico; es decir, el trabajo se realiza en su totalidad o no se realiza en ningún caso. Una Transacción es una unidad de trabajo en la que se produce una serie de operaciones entre: Begin Transaction y End Transaction. Una transacción es una unidad integral porque mantiene la coherencia de los datos, transformando un estado coherente de datos en otro estado de datos igualmente coherente. La coherencia requiere que los datos enlazados mediante una transacción se mantenga en términos de semántica. Una transacción es una unidad de aislamiento, permitiendo que transacciones concurrentes se comporten como si cada una fuera la única transacción que se ejecuta en el sistema. Una transacción nunca debe ver las fases intermedias de otra transacción. Una transacción tambien es una unidad de recuperación. Si una transacción se realiza satisfactoriamente, el sistema garantiza que sus actualizaciones se mantienen aunque el equipo falle inmediatamente después de la confirmación. Transacciones Manuales Transacciones Automáticas Permiten comenzar de forma explícita una transacción, controlar cada una de las inscripciones de recursos y conexiones dentro del límite de la transacción, determinar el resultado de la misma (confirmación o anulación) y finalizarla. Tipos: Transacciones de ADO .NET Transacciones de Colas de Mensajes Cuando se trabaja con aplicaciones distribuidas con COM+ Admitidas por: Microsoft Transaction Server (MTS) COM+ Common Lenguaje Runtime Una vez que una página de ASP .NET, un método de servicio web XML, o una clase de .NET Framework se marcan para participar en una transacción, se ejecutan automáticamente en el ámbito de la misma. Tipos: Transacciones de ASP .NET Transacciones de servicios Web XML Transacciones de servicios empresariales .NET Para comenzar una transacción local, usaremos el objeto de conexión de ADO.NET: Connection.BeginTransaction Inscribiremos un comando en esa transacción mediante la propiedad Transaction del objeto Command. Luego, podremos utilizar el objeto Transaction para confirmar o deshacer las modificaciones realizadas en el origen de datos, en función del éxito o de los errores de los componentes de la transacción. Declarar una variable de tipo SqlTransaction Dim Tran As SqlTransaction Definir una estructura Try..Catch..Finally que maneje los posibles errores de ejecución de comandos: En Try, abrir la conexión: Cnn.Open() Crear la transacción: Tran = Cnn.BeginTransaction Configurar la propiedad Transaction de todos los comandos que se desean en la transacción oComando.Transaction = Tran Ejecutar los comandos con ExecuteNonQuery oComando.ExecuteNonQuery Siningún comando genera una excepción, realizar la transacción mediante Commit: Tran.Commit() Si algún comando genera un error, anular la transacción con Rollback dentro de Catch: Tran.Rollback() Cerrar la conección si está abierta, dentro de Finally: If cnn.State=ConnectionState.Open then Cnn.Close()