Ejemplos de Transacciones en SQL
Ejemplos de Transacciones en SQL
Ejemplos de Transacciones en SQL
ASIGNACIÓN:
LABORATORIO #1
TÍTULO DE LA EXPERIENCIA:
SIMULACIÓN DE TRANSACCIONES EN EL ENTORNO DE MICROSOFT SQL
SERVER
ESTUDIANTE:
ARLAND BARRERA (9-763-400)
FACILITADOR:
CARLOS HERRERA
ASIGNATURA:
BASE DE DATOS II
FECHA DE ENTREGA:
04 DE SEPTIEMBRE DE 2024
Tabla de contenido
Problema #1 .................................................................................................................. 3
Problema #2 .................................................................................................................. 3
Caso Nº1 ................................................................................................................... 4
Problema #3 .................................................................................................................. 8
Caso N°1 ................................................................................................................... 8
Caso Nº2 ................................................................................................................. 10
Caso Nº3 ................................................................................................................. 11
Caso Nº4 ................................................................................................................. 12
Caso Nº5 ................................................................................................................. 14
Problema #4 ................................................................................................................ 16
Caso Nº1 ................................................................................................................. 16
Consideraciones Finales .............................................................................................. 18
Problema #1
Creación de Cuenta de Usuario / Inicio de Sesión en SQL Server: Modo de
Autenticación de Windows y SQL Server.
Creación del usuario: user_lab
Password: 123456
Base de datos BD_ACADEMICA en el modo de autenticación de SQL Server.
Problema #2
Modificando Configuración del SGBD para el Manejo de Transacción.
--Verificar Configuración por Defecto del SQL
DBCC USEROPTIONS
Caso Nº1
--Desde el Usuario Administrador
CREATE TABLE REG_TRANSAC
(
Id Int Not Null,
Descripcion varchar(10)
)
GO
SELECT * FROM REG_TRANSAC
Problema #3
Modificando Configuración del SGBD para el Manejo de Transacción.
Caso N°1
/* Insertando Registro en la Tabla Profesor sin cerrar la transacción */
BEGIN TRANSACTION
INSERT INTO TB_FACULTAD (Cod_Facultad, Nombre_Facultad) VALUES
(116, 'Facultad de Ingeniería en Sistemas Computacionales');
GO
SELECT COUNT(*) FROM TB_FACULTAD
ROLLBACK
/*COMMIT*/ TRANSACTION
Originalmente son 7 registros.
Caso Nº2
Consultando Tabla TB_FACULTAD cuando otro usuario está actualizando registros
en la misma tabla y realiza una operación ROLLBACK. Cambiar entre usuarios y
evaluar qué sucede cuando se configura el manejo de transacciones en las
opciones READ COMMITTED / READ UNCOMMITTED en ambos usuarios.
--Usuario N1
Begin Tran
SELECT * FROM TB_FACULTAD
Commit Tran
--Usuario N2
Begin Tran
SELECT * FROM TB_FACULTAD
Commit Tran
El user2 no puede acceder a la tabla TB_FACULTAD dado que la transacción
empezada por el user1 no ha sido cerrada.
Caso Nº3
Consultando Tabla TB_CURSO_ESTUDIANTE cuando otro usuario está borrando
registros en la misma tabla y realiza una operación ROLLBACK. Cambiar entre
usuarios y evaluar qué sucede cuando se configura el manejo de transacciones en
las opciones READ COMMITTED / READ UNCOMMITTED en ambos usuarios.
--Usuario N1
Begin Transaction
DELETE FROM TB_CURSO_ESTUDIANTE;
SELECT * FROM TB_CURSO_ESTUDIANTE
SELECT COUNT(*) FROM TB_CURSO_ESTUDIANTE
/*Commit transaction*/ /*Rollback transaction*/
Usar el comando SELECT desde el user2. Como la transacción está abierta, SQL
se queda procesando esa tabla y no se puede acceder desde otro usuario.
Caso Nº4
Consultando Tabla TB_ESTUDIANTES cuando otro usuario está insertando varios
registros en la misma tabla y realiza una operación ROLLBACK. Cambiar entre
usuarios y evaluar qué sucede cuando se configura el manejo de transacciones en
las opciones READ COMMITTED / READ UNCOMMITTED en ambos usuarios.
--Usuario N1
Begin Transaction
SELECT * FROM TB_ESTUDIANTES
INSERT INTO TB_ESTUDIANTES (ID_Estudiante, Nombre_Estudiante,
Apellido_Estudiante, Direccion_Estudiante, Telefono_Fijo_Estudiante,
Telefono_Movil_Estudiante, Correo_Estudiante, Cod_Carrera) VALUES (21, 'Juan',
'Pérez', 'Santiago', '9980045', '65784525', '[email protected]', 1008)
INSERT INTO TB_ESTUDIANTES (ID_Estudiante, Nombre_Estudiante,
Apellido_Estudiante, Direccion_Estudiante, Telefono_Fijo_Estudiante,
Telefono_Movil_Estudiante, Correo_Estudiante, Cod_Carrera) VALUES (22,
'Miguel', 'Campos', 'Santiago', '9980045', '63567890', '[email protected]',
1008)
INSERT INTO TB_ESTUDIANTES (ID_Estudiante, Nombre_Estudiante,
Apellido_Estudiante, Direccion_Estudiante, Telefono_Fijo_Estudiante,
Telefono_Movil_Estudiante, Correo_Estudiante, Cod_Carrera) VALUES (23, 'Jose',
'Sanchez', 'Aguadulce', '9978694', '66789089', '[email protected]', 1008)
INSERT INTO TB_ESTUDIANTES (ID_Estudiante, Nombre_Estudiante,
Apellido_Estudiante, Direccion_Estudiante, Telefono_Fijo_Estudiante,
Telefono_Movil_Estudiante, Correo_Estudiante, Cod_Carrera) VALUES (24,
'Maria', 'Gonzalez', 'Santiago', '9590876', '65453421', '[email protected]',
1008)
INSERT INTO TB_ESTUDIANTES (ID_Estudiante, Nombre_Estudiante,
Apellido_Estudiante, Direccion_Estudiante, Telefono_Fijo_Estudiante,
Telefono_Movil_Estudiante, Correo_Estudiante, Cod_Carrera) VALUES (10,
'Serafina', 'Muñoz', 'Chiriqui', '9932310', '67890543', '[email protected]',
1008)
SELECT * FROM TB_ESTUDIANTES -- Evaluar la cantidad de registros en este
punto.
Commit transaction
ROLLBACK Transaction
Caso Nº5
Transacciones Anidadas. Probando el Efecto del COMMIT Y ROLLBACK en
Transacciones Anidadas. Explicar el comportamiento del COMMIT y el
ROLLBACK.
--Usuario N1
BEGIN TRANSACTION
--Inserción en la Tabla TB_Cursos
INSERT INTO TB_CURSOS (ID_Curso , Cod_Asignatura ,Semestre_Curso ,
Año_Curso ,Horario_Curso, Cod_Profesor)
VALUES (7036,2001,'I',5,'7:40 AM- 12:30AM',3016)
SELECT * FROM TB_CURSOS
Desde el user2 no se puede acceder a las tablas modificadas, sin embargo, como
la transacción con el user1 está abierta no se puede.
Problema #4
Manejo de la Variable @@TRANCOUNT.
Caso Nº1
Explicar cómo es el comportamiento de la Variable @@TRANCOUNT al inicio,
cuando se está ejecutando y al cerrar la última transacción.
Consideraciones Finales
Este laboratorio me ayudó a familiarizarme con el concepto de transacción en SQL
y su aplicación en distintos contextos.