DOCENTE : Marco Porro Chulli.
TEMA : Transacciones
CICLO : VIII “A”
INTEGRANTES :
Alberca Rojas Vicente.
Patricia Reyna Reynaga.
BAGUA GRANDE – AMAZONAS
2018
Definición
Es una unidad única de trabajo. Si una transacción tiene éxito, todas las
modificaciones de los datos realizadas durante la transacción se confirman
y se convierten en una parte permanente de la base de datos.
Si una transacción encuentra errores y debe cancelarse o revertirse, se
borran todas las modificaciones de los datos.
El principio y el final de las transacciones dependen
de la configuración de AUTOCOMMIT y de las
instrucciones BEGIN TRANSACTION, COMMIT y
ROLLBACK.
Propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad)
Atomicidad: Las operaciones que componen una transacción deben
considerarse como una sola.
Una transacción es una unidad de trabajo en la que se produce una serie de
operaciones entre las instrucciones BEGIN TRANSACTION y END
TRANSACTION de una aplicación. Una transacción se ejecuta exactamente
una vez y tiene carácter "atómico" (de subdivisión), es decir, el trabajo se
realiza en su totalidad o no se realiza en ningún caso.
Una operación nunca deberá dejar datos inconsistentes.
Una transacción es una unidad de integridad porque mantiene la coherencia
de los datos, transformando un estado coherente de datos en otro estado
de datos igualmente coherente.
Consistencia:
Aislamiento:
Los datos "sucios" deben estar aislados, y evitar que los usuarios utilicen
información que aún no está confirmada o validada.
El aislamiento requiere que parezca que cada transacción sea la única que
manipula el almacén de datos, aunque se puedan estar ejecutando otras
transacciones al mismo tiempo. Una transacción nunca debe ver las fases
intermedias de otra transacción.
Durabilidad:
Una vez completada la transacción los datos actualizados ya serán permanentes y confirmados.
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. El registro
especializado permite que el procedimiento de reinicio del sistema complete las operaciones no
finalizadas, garantizando la permanencia de la transacción.
Tipos de Transacciones
De Confirmación Automática: El Gestor de Datos inicia una transacción
automáticamente por cada operación que actualice datos. De este modo mantiene siempre
la consistencia de la base de datos, aunque puede generar bloqueos.
Implícitas:
Cuando el Gestor de Datos comienza una transacción automáticamente cada vez que se
produce una actualización de datos, pero el que dicha transacción se confirme o se
deshaga, lo debe indicar
el programador.
Se inicia implícitamente una nueva transacción cuando se ha completado la anterior, pero
cada transacción se completa explícitamente con una instrucción COMMIT o ROLLBACK.
Son las que iniciamos nosotros "a mano" mediante instrucciones SQL, los
programadores son los que indican qué operaciones va a abarcar.
Cada transacción se inicia explícitamente con la instrucción BEGIN
TRANSACTION y se termina explícitamente con una instrucción COMMIT o
ROLLBACK.
Explícitas
Transacciones de Ámbito de Lote:
Una transacción implícita o explícita de Transact-SQL que se inicia en una sesión de
MARS (conjuntos de resultados activos múltiples), que solo es aplicable a MARS, se
convierte en una transacción de ámbito de lote. Si no se confirma o revierte una
transacción de ámbito de lote cuando se completa el lote, SQL Server la revierte
automáticamente.
Comandos BEGIN TRANSACTION, ROLLBACK TRANSACTION y COMMIT
TRANSACTION
BEGIN TRANSACTION
Marca el punto de inicio de una transacción explícita.
Representa un punto en el que los datos a los que hace referencia una conexión son lógica y
físicamente coherentes. Si se producen errores, se pueden revertir todas las modificaciones
realizadas en los datos después de BEGIN TRANSACTION para devolver los datos al estado
conocido de coherencia.
Marca el final de una transacción explícita o de confirmación automática. Esta instrucción
hace que los cambios en la transacción se confirmen permanentemente en la base de
datos. La instrucción COMMIT es idéntica a COMMIT WORK, COMMIT TRAN y COMMIT
TRANSACTION.
COMMIT
ROLLBACK
Revierte una transacción al principio de la misma. No se confirman cambios para la
transacción en la base de datos. La instrucción ROLLBACK es idéntica a ROLLBACK
WORK, ROLLBACK TRAN y ROLLBACK TRANSACTION.
Ejemplos
 Trabajaremos con la base de datos Northwind en nuestros ejemplos. Vamos a realizar una
transacción que modifica el precio de dos productos de la base de datos.
USE NorthWind
DECLARE @Error int
--Declaramos una variable que utilizaremos pa
ra almacenar un posible código de error
BEGIN TRAN
--Iniciamos la transacción
UPDATE Products SET UnitPrice=20 WHERE Produc
tName ='Chai'
--Ejecutamos la primera sentencia
Ejemplos
SET @Error=@@ERROR
--Si ocurre un error almacenamos su código en @Error
--y saltamos al trozo de código que deshara la transacción. Si, eso de ahí es un
--GOTO, el demonio de los programadores, pero no pasa nada por usarlo
--cuando es necesario
IF (@Error<>0) GOTO TratarError
--Si la primera sentencia se ejecuta con éxito, pasamos a la segunda
UPDATE Products SET UnitPrice=20 WHERE ProductName='Chang'
SET @Error=@@ERROR
--Y si hay un error hacemos como antes
IF (@Error<>0) GOTO TratarError
la base de datos
COMMIT TRAN
TratarError:
--Si ha ocurrido algún error llegamos hasta aquí
If @@Error<>0 THEN
BEGIN
PRINT 'Ha ecorrido un error. Abortamos la transacción'
--Se lo comunicamos al usuario y deshacemos la transacción
--todo volverá a estar como si nada hubiera ocurrido
ROLLBACK TRAN
END
Veamos otro par de ejemplos para dejar claro como funcionan las sentencias BEGIN,
COMMIT y SAVE.
BEGIN TRAN—
Primer BEGIN TRAN y ahora @@TRANCOUNT = 1
BEGIN TRAN
-- Ahora @@TRANCOUNT = 2
COMMIT TRAN
-- Volvemos a @@TRANCOUNT = 1
Una transacción es un conjunto de operaciones Transact SQL que se ejecutan como un único bloque,
es decir, si falla una operación Transact SQL fallan todas. Si una transacción tiene éxito, todas las
modificaciones de los datos realizadas durante la transacción se confirman y se convierten en una
parte permanente de la base de datos. Si una transacción encuentra errores y debe cancelarse o
revertirse, se borran todas las modificaciones de los datos.
Resumen
Transacciones

Transacciones

  • 1.
    DOCENTE : MarcoPorro Chulli. TEMA : Transacciones CICLO : VIII “A” INTEGRANTES : Alberca Rojas Vicente. Patricia Reyna Reynaga. BAGUA GRANDE – AMAZONAS 2018
  • 3.
    Definición Es una unidadúnica de trabajo. Si una transacción tiene éxito, todas las modificaciones de los datos realizadas durante la transacción se confirman y se convierten en una parte permanente de la base de datos. Si una transacción encuentra errores y debe cancelarse o revertirse, se borran todas las modificaciones de los datos. El principio y el final de las transacciones dependen de la configuración de AUTOCOMMIT y de las instrucciones BEGIN TRANSACTION, COMMIT y ROLLBACK.
  • 4.
    Propiedades ACID (Atomicidad,Consistencia, Aislamiento y Durabilidad) Atomicidad: Las operaciones que componen una transacción deben considerarse como una sola. Una transacción es una unidad de trabajo en la que se produce una serie de operaciones entre las instrucciones BEGIN TRANSACTION y END TRANSACTION de una aplicación. Una transacción se ejecuta exactamente una vez y tiene carácter "atómico" (de subdivisión), es decir, el trabajo se realiza en su totalidad o no se realiza en ningún caso.
  • 5.
    Una operación nuncadeberá dejar datos inconsistentes. Una transacción es una unidad de integridad porque mantiene la coherencia de los datos, transformando un estado coherente de datos en otro estado de datos igualmente coherente. Consistencia:
  • 7.
    Aislamiento: Los datos "sucios"deben estar aislados, y evitar que los usuarios utilicen información que aún no está confirmada o validada. El aislamiento requiere que parezca que cada transacción sea la única que manipula el almacén de datos, aunque se puedan estar ejecutando otras transacciones al mismo tiempo. Una transacción nunca debe ver las fases intermedias de otra transacción.
  • 8.
    Durabilidad: Una vez completadala transacción los datos actualizados ya serán permanentes y confirmados. 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. El registro especializado permite que el procedimiento de reinicio del sistema complete las operaciones no finalizadas, garantizando la permanencia de la transacción.
  • 9.
    Tipos de Transacciones DeConfirmación Automática: El Gestor de Datos inicia una transacción automáticamente por cada operación que actualice datos. De este modo mantiene siempre la consistencia de la base de datos, aunque puede generar bloqueos.
  • 10.
    Implícitas: Cuando el Gestorde Datos comienza una transacción automáticamente cada vez que se produce una actualización de datos, pero el que dicha transacción se confirme o se deshaga, lo debe indicar el programador. Se inicia implícitamente una nueva transacción cuando se ha completado la anterior, pero cada transacción se completa explícitamente con una instrucción COMMIT o ROLLBACK.
  • 11.
    Son las queiniciamos nosotros "a mano" mediante instrucciones SQL, los programadores son los que indican qué operaciones va a abarcar. Cada transacción se inicia explícitamente con la instrucción BEGIN TRANSACTION y se termina explícitamente con una instrucción COMMIT o ROLLBACK. Explícitas
  • 12.
    Transacciones de Ámbitode Lote: Una transacción implícita o explícita de Transact-SQL que se inicia en una sesión de MARS (conjuntos de resultados activos múltiples), que solo es aplicable a MARS, se convierte en una transacción de ámbito de lote. Si no se confirma o revierte una transacción de ámbito de lote cuando se completa el lote, SQL Server la revierte automáticamente.
  • 13.
    Comandos BEGIN TRANSACTION,ROLLBACK TRANSACTION y COMMIT TRANSACTION BEGIN TRANSACTION Marca el punto de inicio de una transacción explícita. Representa un punto en el que los datos a los que hace referencia una conexión son lógica y físicamente coherentes. Si se producen errores, se pueden revertir todas las modificaciones realizadas en los datos después de BEGIN TRANSACTION para devolver los datos al estado conocido de coherencia.
  • 14.
    Marca el finalde una transacción explícita o de confirmación automática. Esta instrucción hace que los cambios en la transacción se confirmen permanentemente en la base de datos. La instrucción COMMIT es idéntica a COMMIT WORK, COMMIT TRAN y COMMIT TRANSACTION. COMMIT
  • 15.
    ROLLBACK Revierte una transacciónal principio de la misma. No se confirman cambios para la transacción en la base de datos. La instrucción ROLLBACK es idéntica a ROLLBACK WORK, ROLLBACK TRAN y ROLLBACK TRANSACTION.
  • 16.
    Ejemplos  Trabajaremos conla base de datos Northwind en nuestros ejemplos. Vamos a realizar una transacción que modifica el precio de dos productos de la base de datos. USE NorthWind DECLARE @Error int --Declaramos una variable que utilizaremos pa ra almacenar un posible código de error BEGIN TRAN --Iniciamos la transacción UPDATE Products SET UnitPrice=20 WHERE Produc tName ='Chai' --Ejecutamos la primera sentencia
  • 17.
    Ejemplos SET @Error=@@ERROR --Si ocurreun error almacenamos su código en @Error --y saltamos al trozo de código que deshara la transacción. Si, eso de ahí es un --GOTO, el demonio de los programadores, pero no pasa nada por usarlo --cuando es necesario IF (@Error<>0) GOTO TratarError --Si la primera sentencia se ejecuta con éxito, pasamos a la segunda UPDATE Products SET UnitPrice=20 WHERE ProductName='Chang' SET @Error=@@ERROR --Y si hay un error hacemos como antes IF (@Error<>0) GOTO TratarError
  • 18.
    la base dedatos COMMIT TRAN TratarError: --Si ha ocurrido algún error llegamos hasta aquí If @@Error<>0 THEN BEGIN PRINT 'Ha ecorrido un error. Abortamos la transacción' --Se lo comunicamos al usuario y deshacemos la transacción --todo volverá a estar como si nada hubiera ocurrido ROLLBACK TRAN END
  • 19.
    Veamos otro parde ejemplos para dejar claro como funcionan las sentencias BEGIN, COMMIT y SAVE. BEGIN TRAN— Primer BEGIN TRAN y ahora @@TRANCOUNT = 1 BEGIN TRAN -- Ahora @@TRANCOUNT = 2 COMMIT TRAN -- Volvemos a @@TRANCOUNT = 1
  • 20.
    Una transacción esun conjunto de operaciones Transact SQL que se ejecutan como un único bloque, es decir, si falla una operación Transact SQL fallan todas. Si una transacción tiene éxito, todas las modificaciones de los datos realizadas durante la transacción se confirman y se convierten en una parte permanente de la base de datos. Si una transacción encuentra errores y debe cancelarse o revertirse, se borran todas las modificaciones de los datos. Resumen