Docente :Ing. Marco Aurelio Porro Chulli.
Asignatura :Base de Datos II.
Ciclo : VIII “A”
Integrante:
• Yenny Isabel Cuello Morón.
• Yanina Bustamante Jibaja.
INGENIERÍA DE SISTEMAS Y TELEMÁTICA
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
• Coherencia
• asilamiento
• durabilidad
Propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad)
Atomicidad
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
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.
Se requiere que los datos
enlazados mediante una
transacción se mantengan en
términos de semántica.
Una operación nunca deberá
dejar datos inconsistentes
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.
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.
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
Conclusiones
 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.

Transacciones

  • 1.
    Docente :Ing. MarcoAurelio Porro Chulli. Asignatura :Base de Datos II. Ciclo : VIII “A” Integrante: • Yenny Isabel Cuello Morón. • Yanina Bustamante Jibaja. INGENIERÍA DE SISTEMAS Y TELEMÁTICA TRANSACCIONES EN SQL SERVER
  • 2.
    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 • Coherencia • asilamiento • durabilidad
  • 3.
    Propiedades ACID (Atomicidad,Consistencia, Aislamiento y Durabilidad) Atomicidad 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
  • 4.
    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. Se requiere que los datos enlazados mediante una transacción se mantengan en términos de semántica. Una operación nunca deberá dejar datos inconsistentes
  • 5.
    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. 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.
  • 6.
    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.
  • 7.
    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.
  • 8.
     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.
  • 9.
    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.
  • 10.
    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.
  • 11.
    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.
  • 12.
    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
  • 13.
    --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
  • 14.
    Conclusiones  Si unatransacció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.