Ejemplos de Transacciones en SQL

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 18

UNIVERSIDAD TECNOLÓGICA DE PANAMÁ

FACULTAD DE INGENIERÍA DE SISTEMAS


COMPUTACIONALES

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

/* Configurando la Base de Datos para el Manejo de Transacciones */


--Activar el Modo de transacciones Implícitas
SET IMPLICIT_TRANSACTIONS ON;

--Probando la configuración implícita / Explicita / Automático. Comprobar el


comportamiento con los modos de transacciones Implícitos, Explícitos y
Automático.

Caso Nº1
--Desde el Usuario Administrador
CREATE TABLE REG_TRANSAC
(
Id Int Not Null,
Descripcion varchar(10)
)
GO
SELECT * FROM REG_TRANSAC

Permite realizar un SELECT en la tabla, aunque no se haya terminado la


transacción.
ROLLBACK
--COMMIT

Se hace un ROLLBACK y la tabla no se crea.


La tabla no se muestra.

Utilizando COMMIT la tabla se crea y se muestra.


DROP TABLE REG_TRANSAC
GO
COMMIT TRANSACTION
--ROLLBACK

Se intenta borrar la tabla, pero se impide con un ROLLBACK.


-- Identificar el Nivel de Aislamiento en SQL Server.
--Desde el Usuario SQL
DBCC USEROPTIONS
--Configurar el nivel de aislamiento de las transacciones.
SET TRANSACTION ISOLATION LEVEL READ COMMITTED. /* Se utiliza para
establecer el nivel de aislamiento para la sesión actual o para una transacción*/
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; /* Se establece
el nivel de aislamiento para la sesión actual

¿Qué sucede con el usuario SQL? ¿Cuál es el comportamiento del SGBD?


El usuario SQL no tiene acceso a la tabla. El SGBD Impide acceder a la tabla.

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.

Iniciar la transacción e insertar valores con user1.

Agregando una más en la transacción son 8 registros.


--Usuario N2
Begin Tran
SELECT * FROM TB_FACULTAD
Commit Tran
Desde el user2 SQL se queda procesando la transacción. Dado que la transacción
sobre la tabla TB_FACULTAD desde el user1 no se ha concluido, cuando se
accede a la tabla desde el user2 no es posible. Dado que la transacción lo impide.

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*/

Al principio hay 17 registros en la tabla TB_CURSO_ESTUDIANTE.


Inicial la transacción en el user1.
Begin Tran
SELECT * FROM TB_CURSO_ESTUDIANTE
Commit Tran

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

SELECT de los registros iniciales de la tabla TB_ESTUDIANTES.


Nuevos registros insertados, esto sin terminar la transacción.
--Usuario N2

Usar SELECT desde el user2 no permite acceder a la tabla, dado que la


transacción que inició el user1 no ha sido cerrada.

Hacer un ROLLBACK desde el user1 de la transacción que involucra insertar


nuevos registros.

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

Inserción en la tabla TB_CURSOS.


BEGIN TRANSACTION
INSERT INTO TB_CURSO_ESTUDIANTE (ID_Estudiante,ID_Curso,
Calificacion_Curso)
VALUES (9001, 7036,73)
SELECT * FROM TB_CURSO_ESTUDIANTE
Inserción en la tabla TB_CURSO_ESTUDIANTE.
COMMIT TRANSACTION
ROLLBACK TRANSACTION
SELECT * FROM TB_CURSOS
SELECT * FROM TB_CURSO_ESTUDIANTE
--Usuario N2
SELECT * FROM TB_CURSOS
SELECT COUNT (*) FROM TB_CURSOS
SELECT * FROM TB_CURSO_ESTUDIANTE
SELECT COUNT (*) FROM TB_CURSO_ESTUDIANTE

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.

También podría gustarte