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.
Slide 2
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.
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.
Slide 3
SQL Server proporciona las siguientes instrucciones de transacción.
BEGIN DISTRIBUTED TRANSACTION
ROLLBACK TRANSACTION
BEGIN TRANSACTION
ROLLBACK WORK
COMMIT TRANSACTION
SAVE TRANSACTION
COMMIT WORK
En esta sección
Slide 4
Una transacción debe ser una unidad atómica de
trabajo, tanto si se realizan todas sus modificaciones en los datos,
como si no se realiza ninguna de ellas.
Atomicidad
Slide 5
Cuando finaliza, una transacción debe dejar
todos los datos en un estado coherente. En una base de datos relacional,
se deben aplicar todas las reglas a las modificaciones de la
transacción para mantener la integridad de todos los datos. Todas las
estructuras internas de datos, como índices de árbol b o listas
doblemente vinculadas, deben estar correctas al final de la transacción.
Coherencia
Slide 6
Las modificaciones realizadas por
transacciones simultáneas se deben aislar de las modificaciones llevadas
a cabo por otras transacciones simultáneas. Una transacción reconoce
los datos en el estado en que estaban antes de que otra transacción
simultánea los modificara o después de que la segunda transacción haya
concluido, pero no reconoce un estado intermedio. Esto se conoce como
seriabilidad, ya que deriva en la capacidad de volver a cargar los datos
iniciales y reproducir una serie de transacciones para finalizar con
los datos en el mismo estado en que estaban después de realizar las
transacciones originales.
Aislamiento
Slide 7
Una vez concluida una transacción, sus
efectos son permanentes en el sistema. Las modificaciones persisten aún
en el caso de producirse un error del sistema.
Durabilidad
Slide 8
Especificar y exigir transacciones
Los programadores de SQL son los responsables de iniciar y finalizar
las transacciones en puntos que exijan la coherencia lógica de los
datos. El programador debe definir la secuencia de modificaciones de
datos que los dejan en un estado coherente en relación con las reglas de
negocios de la organización. El programador incluye estas instrucciones
de modificación en una sola transacción de forma que SQL Server
Database Engine (Motor de base de datos de SQL Server) puede hacer
cumplir la integridad física de la misma.Es responsabilidad de un
sistema de base de datos corporativo, como una instancia de Motor de
base de datos, proporcionar los mecanismos que aseguren la integridad
física de cada transacción. Motor de base de datos proporciona:
Servicios de bloqueo que preservan el aislamiento de la transacción.
Servicios
de registro que aseguran la durabilidad de la transacción. Aunque se
produzca un error en el hardware del servidor, el sistema operativo o la
instancia de Motor de base de datos, la instancia utiliza registros de
transacciones, al reiniciar, para revertir automáticamente las
transacciones incompletas al punto en que se produjo el error del
sistema.
Características de administración de
transacciones que exigen la atomicidad y coherencia de la transacción.
Una vez iniciada una transacción, debe concluirse correctamente; en caso
contrario, la instancia de Motor de base de datos deshará todas las
modificaciones de datos realizadas desde que se inició la transacción.