Transacción de base de datos

Hanie Mora Sheordea
Slide Set by Hanie Mora Sheordea, updated more than 1 year ago
Hanie Mora Sheordea
Created by Hanie Mora Sheordea about 4 years ago
10
0

Description

TALLER
Tags

Resource summary

Slide 1

    Transacción de base de datos
    Definición: Una transacción es una secuencia de operaciones realizadas como una sola unidad lógica de trabajo. Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades de atomicidad, coherencia, aislamiento y durabilidad (ACID), para ser calificada como transacción. () La transacción es una conjunto de instrucciones la cual tiene que realizar todas sus instrucciones o ninguna de ellas, teniendo esta definición también se puede decir que la transacción es una unidad lógica de trabajo. ()

Slide 2

    Las transacciones deben cumplir cuatro propiedades ACID: Atomicidad (Atomicity): es la propiedad que asegura que la operación se ha realizado o no, y por lo tanto ante un fallo del sistema no puede quedar a medias. Consistencia (Consistency): es la propiedad que asegura que sólo se empieza aquello que se puede acabar. Por lo tanto, se ejecutan aquellas operaciones que no van a romper la reglas y directrices de integridad de la base de datos. Aislamiento (Isolation): es la propiedad que asegura que una operación no puede afectar a otras. Esto asegura que la realización de dos transacciones sobre la misma información nunca generará ningún tipo de error. Permanencia (Durability): es la propiedad que asegura que una vez realizada la operación, ésta persistirá y no se podrá deshacer aunque falle el sistema.
    Características:

Slide 3

    COMMIT TRANSACTION (Transact-SQL)
    DEFINICION:Un COMMIT declaración en SQL termina una transacción dentro de un sistema de gestión de bases de datos relacionales (RDBMS) y hace que todos los cambios sean visibles para otros usuarios. El formato general es emitir un BEGIN WORK declaración, una o más sentencias SQL, y luego el COMMIT comunicado.Alternativamente, un ROLLBACK declaración puede ser emitida, lo que deshace todo el trabajo realizado desde BEGIN WORK se emitió. Un COMMIT declaración también se libere a todos los existentes puntos de rescate que puedan estar en uso.SINTAXIS:COMMIT [ { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ]   [ ; ]
    EJEMPLO:USE AdventureWorks2012;   GO BEGIN TRANSACTION; GO DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 13; GO COMMIT TRANSACTION; GO

Slide 4

    ROLLBACK TRANSACTION (Transact-SQL)
    DEFINICION:En tecnologías de base de datos, un rollback o reversión es una operación que devuelve a la base de datos a algún estado previo. Los Rollbacks son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada a una copia limpia incluso después de que se han realizado operaciones erróneas. Son cruciales para la recuperación de crashes de un servidor de base de datos; realizando rollback(devuelto) cualquier transacción que estuviera activa en el tiempo del crash, la base de datos es restaurada a un estado consistente.SINTAXIS:ROLLBACK { TRAN | TRANSACTION }    [ transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable ] [ ; ]
    EJEMPLO:USE tempdb;   GO CREATE TABLE ValueTable ([value] int;) GO DECLARE @TransactionName varchar(20) = 'Transaction1'; --The following statements start a named transaction, --insert two rows, and then roll back --the transaction named in the variable @TransactionName. --Another statement outside of the named transaction inserts two rows. --The query returns the results of the previous statements. BEGIN TRAN @TransactionName INSERT INTO ValueTable VALUES(1), (2); ROLLBACK TRAN @TransactionName; INSERT INTO ValueTable VALUES(3),(4); SELECT [value] FROM ValueTable; DROP TABLE ValueTable; --Results --value ------------- --3 --4

Slide 5

    SAVE TRANSACTION (Transact-SQL)
    DEFINICION:Un savepoint (en español, punto de recuperación) es una forma de implementar subtransacciones (también conocidas como transacciones anidadas) dentro de unsistema gestor de base de datos relacional indicando un punto dentro de una transacción de base de datos que puede ser "rolled back" (devuelta) sin afectar a cualquier trabajo realizado en la transacción antes de que el punto de recuperación fuera creado. Varios savepoints pueden existir dentro de una transacción individual. Los Savepoints son útiles para implementar recuperación de errores complejos en aplicaciones de base de datos — si ocurre un error en el medio de una transacción de múltiples sentencias, la aplicación puede ser capaz de recuperarse del error (devolviendo, "roll back", hasta un savepoint) sin necesidad de abortar la transacción completa.SINTAXIS:SAVE { TRAN | TRANSACTION } { savepoint_name | @savepoint_variable }   [ ; ]
    EJEMPLO:USE AdventureWorks2012;   GO IF EXISTS (SELECT name FROM sys.objects WHERE name = N'SaveTranExample') DROP PROCEDURE SaveTranExample; GO CREATE PROCEDURE SaveTranExample @InputCandidateID INT AS -- Detect whether the procedure was called -- from an active transaction and save -- that for later use. -- In the procedure, @TranCounter = 0 -- means there was no active transaction -- and the procedure started one. -- @TranCounter > 0 means an active -- transaction was started before the -- procedure was called.

Slide 6

    DECLARE @TranCounter INT; SET @TranCounter = @@TRANCOUNT; IF @TranCounter > 0 -- Procedure called when there is -- an active transaction. -- Create a savepoint to be able -- to roll back only the work done -- in the procedure if there is an -- error. SAVE TRANSACTION ProcedureSave; ELSE -- Procedure must start its own -- transaction. BEGIN TRANSACTION; -- Modify database. BEGIN TRY DELETE HumanResources.JobCandidate WHERE JobCandidateID = @InputCandidateID; -- Get here if no errors; must commit -- any transaction started in the -- procedure, but not commit a transaction -- started before the transaction was called. IF @TranCounter = 0
    -- @TranCounter = 0 means no transaction was -- started before the procedure was called. -- The procedure must commit the transaction -- it started. COMMIT TRANSACTION; END TRY BEGIN CATCH -- An error occurred; must determine -- which type of rollback will roll -- back only the work done in the -- procedure. IF @TranCounter = 0 -- Transaction started in procedure. -- Roll back complete transaction. ROLLBACK TRANSACTION; ELSE -- Transaction started before procedure -- called, do not roll back modifications -- made before the procedure was called. IF XACT_STATE() <> -1

Slide 7

    -- If the transaction is still valid, just -- roll back to the savepoint set at the -- start of the stored procedure. ROLLBACK TRANSACTION ProcedureSave; -- If the transaction is uncommitable, a -- rollback to the savepoint is not allowed -- because the savepoint rollback writes to -- the log. Just return to the caller, which -- should roll back the outer transaction. -- After the appropriate rollback, echo error -- information to the caller. DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; SELECT @ErrorMessage = ERROR_MESSAGE(); SELECT @ErrorSeverity = ERROR_SEVERITY(); SELECT @ErrorState = ERROR_STATE();
    RAISERROR (@ErrorMessage, -- Message text. @ErrorSeverity, -- Severity. @ErrorState -- State. ); END CATCH   GO  
    Ejemplo

Slide 8

    SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
    DEFINICION:Controla el bloqueo y la fila comportamiento de versiones de instrucciones de Transact-SQL emitidas por una conexión a SQL Server.SINTAXIS:SET TRANSACTION ISOLATION LEVEL   { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE } [ ; ]
    EJEMPLO:USE AdventureWorks2012;   GO SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; GO BEGIN TRANSACTION; GO SELECT * FROM HumanResources.EmployeePayHistory; GO SELECT * FROM HumanResources.Department; GO COMMIT TRANSACTION; GO
Show full summary Hide full summary

Similar

MENTEFACTO BASE DE DATOS
jessica patiño
Transacciones Base de datos
Jose Granja
Transacciones sql
Mauricio Barragán
Mapa Conceptual de la arquitectura de base de datos
pedro cepeda
Mapa Conceptual de la arquitectura de base de datos
CRISTIAN DANIEL PEREZ VASQUEZ
Mapa Conceptual de la arquitectura de base de datos
Alan Alvarado
Mapa Conceptual contabilidad
Karina Vargas
Mapa Conceptual de la arquitectura de base de datos
Génesis Nallely Ortega Torres
Mapa Conceptual de la arquitectura de base de datos
pedro cepeda
Mapa Conceptual de la arquitectura de base de datos
Juan David Vargas Hernandez
Mapa Conceptual de la arquitectura de base de datos
alejandro perez mejia