Una transacció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.
SQL Server funciona en los siguientes tres modos de transacción.
Transacciones de confirmación automática
Cada instrucción individual es una transacción.
Transacciones explícitas
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 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.
Slide 2
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
QUE ES UNA TRANSACCION EN SQL
Slide 3
INSTRUCCIONES DE UNA TRANSACCION
BEGIN TRANSACTION (Transact-SQL)
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 complete sin errores y se emite COMMIT TRANSACTION
para hacer que las modificaciones sean 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 TRANSACTION (Transact-SQL)
Marca el final de una transacción correcta, implícita o explícita.
Si
@@TRANCOUNT es 1, COMMIT TRANSACTION hace que todas las modificaciones
efectuadas sobre los datos desde el inicio de la transacción sean parte
permanente de la base de datos, libera los recursos mantenidos por la
transacción y reduce @@TRANCOUNT a 0. Si @@TRANCOUNT es mayor que 1, COMMIT TRANSACTION solo reduce @@TRANCOUNT en 1 y la transacción sigue activa.
SINTAXIS COMMIT [ { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ]
[ ; ]
Slide 5
INSTRUCCIONES DE UNA TRANSACCION
ROLLBACK TRANSACTION (Transact-SQL)
Revierte
una transacción explícita o implícita hasta el inicio de la transacción
o hasta un punto de retorno dentro de la transacción.
Puede
usar ROLLBACK TRANSACTION para borrar todas las modificaciones de datos
realizadas desde el inicio de la transacción o hasta un punto de
retorno. También libera los recursos que mantiene la transacción.
SAVE TRANSACTION (Transact-SQL)
Establece un punto de retorno dentro de una transacción savepoint_name
Es el nombre asignado al punto de retorno.
Los
nombres de los puntos de retorno deben ajustarse a las reglas para los
identificadores, aunque están limitados a 32 caracteres.
transaction_name siempre distingue mayúsculas de minúsculas, incluso cuando la instancia de SQL Server no distingue mayúsculas de minúsculas.
SET TRANSACTION Establece las características de la transacción actual. No tiene efecto en cualquier transacción subsecuente.SET
SESSION CHARACTERISTICS define las características por default para
todas las transacciones subsecuentes de una sesión. Estos defaults
pueden se sobre escritos por SET TRANSACTION para una transacción
individual
SINTAXIS SET TRANSACTION transaction_mode [, ...]SET TRANSACTION SNAPSHOT snapshot_idSET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...] where transaction_mode is one of: ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED } READ WRITE | READ ONLY [ NOT ] DEFERRABLE