AREA : BASE DE DATOS II
DOCENTE : ING. MARCO AURELIO PORRO CHULLI
CARRERA : INGENIERÍA DE SISTEMAS Y TELEMÁTICA
INTEGRANTES:
CRISTHIAN SERGIO KAYAP YAGKIKAT
INGRID LESLY CORONEL ACUÑA
TRANSACCIONES EN
SQL SERVER
DEFINICION
Una transacción es un conjunto de operaciones que van a ser tratadas como una única
unidad. Las transacciones deben cumplir 4 propiedades fundamentales conocidas como
ACID:
•
Atomicidad
•
asilamiento
•
Coherencia
•
durabilidad
Propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad)
Las operaciones que componen
una transacción deben
considerarse como una sola.
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.
Si el sistema ejecutase únicamente una
parte de las operaciones, podría poner
en peligro el objetivo final de la
transacción
ATOMICIDAD
Consistencia
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.
Una operación nunca
deberá dejar datos
inconsistentes
Se requiere que los datos
enlazados mediante una
transacción se mantengan en
términos de semántica.
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.
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.
AISLAMIENTO
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 (IMPLÍCITAS, EXPLÍCITAS, ÁMBITO DE LOTE, ETC.)
IMPLÍCITAS: 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.
EXPLÍCITAS: 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.
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.
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.
COMANDOS BEGIN TRANSACTION, ROLLBACK TRANSACTION Y COMMIT TRANSACTION
BEGIN TRANSACTION
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. Cada transacción dura hasta que se completa sin errores y se emite
COMMIT TRANSACTION para hacer que las modificaciones sean una parte permanente de la
base de datos, o hasta que se produzcan errores y se borren todas las modificaciones con la
instrucción ROLLBACK TRANSACTION.
COMMIT
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. Si la transacción que se ha confirmado era una transacción Transact-SQL
distribuida, COMMIT TRANSACTION hace que MS DTC utilice el protocolo de confirmación en
dos fases para confirmar los servidores involucrados en la transacción.
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. Una transacción no se puede revertir
después de ejecutar una instrucción COMMIT TRANSACTION, excepto cuando COMMIT
TRANSACTION está asociada a una transacción anidada incluida en la transacción que se
revierte.
EJEMPLOS
USE NorthWind
DECLARE @Error int
--Declaramos una variable que utilizaremos para almacenar un posible código de error
BEGIN TRAN
--Iniciamos la transacción
UPDATE Products SET UnitPrice=20 WHERE ProductName ='Chai‘
--Ejecutamos la primera sentencia
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
--Si llegamos hasta aquí es que los dos UPDATE se han completado con
--éxito y podemos "guardar" la transacción en 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
Transacciones

Transacciones

  • 1.
    AREA : BASEDE DATOS II DOCENTE : ING. MARCO AURELIO PORRO CHULLI CARRERA : INGENIERÍA DE SISTEMAS Y TELEMÁTICA INTEGRANTES: CRISTHIAN SERGIO KAYAP YAGKIKAT INGRID LESLY CORONEL ACUÑA
  • 2.
  • 3.
    DEFINICION Una transacción esun conjunto de operaciones que van a ser tratadas como una única unidad. Las transacciones deben cumplir 4 propiedades fundamentales conocidas como ACID: • Atomicidad • asilamiento • Coherencia • durabilidad
  • 4.
    Propiedades ACID (Atomicidad,Consistencia, Aislamiento y Durabilidad) Las operaciones que componen una transacción deben considerarse como una sola. 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. Si el sistema ejecutase únicamente una parte de las operaciones, podría poner en peligro el objetivo final de la transacción ATOMICIDAD
  • 5.
    Consistencia Una transacción esuna unidad de integridad porque mantiene la coherencia de los datos, transformando un estado coherente de datos en otro estado de datos igualmente coherente. Una operación nunca deberá dejar datos inconsistentes Se requiere que los datos enlazados mediante una transacción se mantengan en términos de semántica.
  • 6.
    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. 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. AISLAMIENTO
  • 7.
    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.
  • 8.
    TIPOS DE TRANSACCIONES(IMPLÍCITAS, EXPLÍCITAS, ÁMBITO DE LOTE, ETC.) IMPLÍCITAS: 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. EXPLÍCITAS: 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.
  • 9.
    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. 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.
  • 10.
    COMANDOS BEGIN TRANSACTION,ROLLBACK TRANSACTION Y COMMIT TRANSACTION BEGIN TRANSACTION 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. Cada transacción dura hasta que se completa sin errores y se emite COMMIT TRANSACTION para hacer que las modificaciones sean una parte permanente de la base de datos, o hasta que se produzcan errores y se borren todas las modificaciones con la instrucción ROLLBACK TRANSACTION.
  • 11.
    COMMIT 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. Si la transacción que se ha confirmado era una transacción Transact-SQL distribuida, COMMIT TRANSACTION hace que MS DTC utilice el protocolo de confirmación en dos fases para confirmar los servidores involucrados en la transacción.
  • 12.
    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. Una transacción no se puede revertir después de ejecutar una instrucción COMMIT TRANSACTION, excepto cuando COMMIT TRANSACTION está asociada a una transacción anidada incluida en la transacción que se revierte.
  • 13.
    EJEMPLOS USE NorthWind DECLARE @Errorint --Declaramos una variable que utilizaremos para almacenar un posible código de error BEGIN TRAN --Iniciamos la transacción UPDATE Products SET UnitPrice=20 WHERE ProductName ='Chai‘ --Ejecutamos la primera sentencia 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
  • 14.
    --Y si hayun error hacemos como antes IF (@Error<>0) GOTO TratarError --Si llegamos hasta aquí es que los dos UPDATE se han completado con --éxito y podemos "guardar" la transacción en 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