Вы находитесь на странице: 1из 15

LABORATORIO 10 - MANEJO DE TRANSACCIONES, BLOQUEOS Y

CONTROL DE CONCURRENCIA

1. Elaborar 2 transacciones diferentes insertando, actualizando o eliminando


registro de esta base de datos, todas estas transacciones deben quedar
abiertas, tomar impresione de pantalla de la consulta de la variable que
almacena las transacciones activas y copiar el código de las 2 transacciones
como evidencia.

1) begin transaction
2) insert into eps (nombre,estadoeps) values ('COMFABOY'1)

1) begin transaction

2) update persona
3) set
4) apellido = 'DELGADO'
5) WHERE idpersona = 250025
2. Abrir una consulta nueva en SQL Server 2008 R2 y escribir el siguiente comando
COMMIT TRANSACTION y verificar de nuevo la cantidad de transacciones
activas y determinar que hace este comando en la base de datos SecSalud.

R/ el resultado es:

1) Auto-attach to process '[2736] [SQL] localhost' on machine 'localhost'


succeeded.
2) The thread 'localhost [54]' (0x1610) has exited with code 0 (0x0).
3) The program '[2736] [SQL] localhost: localhost' has exited with code 0 (0x0).

Este comando por sí solo no hace nada, debe ser acompañado de otras
clausulas, dado que este comando se utiliza para finalizar la transacción si no
se han encontrado errores.

3. Que sucede al hacer una consulta de todos los datos de la tabla EPS si
anteriormente se ejecuta el siguiente comando:

1) BEGIN TRANSACTION INSERT


2) INTO EPS (ideps, nombre, estadoeps)
3) VALUES (15,’confisena’,1) '

Para la cancelación de la transacción anterior ¿qué comando se debe utilizar?

R/ sale un error: Cannot insert explicit value for identity column in


table 'EPS' when IDENTITY_INSERT is set to OFF.

Esto ocurre por que sql server no permite insertar datos a llaves primarias de
forma normal:

Hay utilizar el comando, para que deje insertar datos de forma de inserción
explicita en la tabla a una pk: el comando a utilizar es: SET IDENTITY_INSERT
EPS

Ejemplo:

1) BEGIN TRANSACTION
2) SET IDENTITY_INSERT EPS ON
3) INSERT INTO EPS (ideps, nombre, estadoeps)
4) VALUES (15,'confisena',1)
Que le falta a la siguiente transacción para que se efectúen los cambios en la base
de datos Secretaria de Salud.
1) BEGIN TRANSACTION
2) INSERT INTO persona (idPersona, tipoidentificacion, nombre, apellido,
fechaNacimiento, sexo)
3) VALUES (1112548, 1, 'Pedro', 'Garcia', 1982-01-27, 'M');
4) INSERT INTO EPS (nombre, estadoeps)
5) VALUES ('confinacional',4);

R/ lo que hay que hacer es agregar el comando: SET IDENTITY_INSERT [tabla]


ON, para que esta transacción pueda correr y arreglar campos tabla persona:
tipoidentifiacion, idPersona; quedaría:
1) BEGIN TRANSACTION
2) SET IDENTITY_INSERT EPS ON
3) INSERT INTO Persona (idPersona, tipoidentificacion, nombre, apellido,
fechaNacimiento, sexo)
4) VALUES (111245548, 1, 'Pedro', 'Garcia', 1982-01-27, 'M')
5) INSERT INTO EPS (ideps, nombre, estadoeps)
6) VALUES (16,'confiacional',4)

4. En el siguiente cuadro especificar para cada tipo de transacción si es implícita,


explicita o automática.

Transacciones explícitas
Por el contrario, las Transacciones explícitas son las que se define en el código T-
SQL. Hay que indicar cuando se inician (BEGIN TRANSACTION) y cuando finalizan
(COMMIT TRANSACTION), y pueden albergar un conjunto de instrucciones dentro
de la misma transacción.

Cuando se produce el COMMIT, se hacen efectivos los cambios en los ficheros de


datos (.mdf y .ndf). Mientras no se realiza el COMMIT las sentencias de los cambios
se guardan en el log de transacciones (.log), que gracias a este es posible revertir
los cambios si fuese necesario..
Automática
Es el modo de administración de transacciones predeterminado de SQL Server
Database Engine (Motor de base de datos de SQL Server). Cada instrucción
Transact-SQL se confirma o se revierte cuando finaliza. Si una instrucción termina
correctamente, se confirma; si encuentra un error, se revierte. Una conexión a una
instancia de Motor de base de datos funciona en modo de confirmación automática
siempre que no se suplante el modo predeterminado mediante transacciones
explícitas o implícitas.

5. Abra una nueva consulta. Use la base de datos Secretaria de Salud En una
nueva consulta ejecute sp_lock y revise los resultados. Se verifican las consultas
definidas en el laboratorio para comenzar la parte de trabajo con bloqueos de
transacciones:
Se verifica la consulta de bloqueo
Verificación de bloqueos en la base de datos: 0, hasta ahora.
En este aparte si prueba el Sp lock ahora con bloqueo a tabla EPS.

Una vez terminado las partes de las pruebas con los Sql procedemos a realizar las
pruebas de rendimiento y monitorio a la base de datos.

6. laboratorio: Analizar el siguiente script:

1) Use SecSalud:
2)
3) BEGIN TRAN
4) PRINT 'Transacciones Activas'
5) SELECT @@TRANCOUNT
6) SELECT * FROM EPS
7)
8) PRINT 'Actualizamos la tabla EPS'
9) SELECT * FROM EPS
10) UPDATE EPS SET nombre = 'SALUDCOOPx' WHERE nombre =
11) 'SALUDCOOP'
12) PRINT 'Miramos la actualización'
13) SELECT * FROM EPS WHERE ideps = 1
14) PRINT 'Transacciones Activas'
15) PRINT @@TRANCOUNT
16) SELECT * FROM EPS
17) PRINT 'Identificador de bloqueo'
18) SELECT @@spid

El Scrip ejecuta normalmente las condicionales del sql para hacer el update, y en el
aparte mensaje muestra el comentario de cada transacción como esta especificado
en el sql.
Informe de todas las transacciones de bloqueo Sp_lock EPS
Analice lo que ocurre con ellas: muestra los valores de los procesos con bloqueo y
con privilegios para acceso, definidos por el comando Sp_lock y afectados por la
clausula IDENTITY_INSERT.
JMINTER

En este laboratorio se realizaran actividades en las que se aborda situaciones


problemáticas que le ayudaran al administrador de bases de datos SQL Server 2014
a desarrollar habilidades que le permitan realizar un control adecuado sobre la
concurrencia y bloqueos en la base de datos. Los DBA tienen la responsabilidad
de mantener disponibles los servicios que presta la base de datos, para ello deben
controlar el comportamiento de los procesos que acceden de forma concurrente
sobre datos compartidos y los bloqueos que estos generan sobre los mismos.
Consideraciones:
• BEGIN TRANSACTION: Inicio de una transacción.
• @@TRANCOUNT: Número de Transacciones actualmente activas.
• COMMIT TRANSACTION: Final de una transacción correcta.
• ROLLBACK TRANSACTION: Revierte una transacción.
• SET TRANSACTION ISOLATION LEVEL: Controlar el comportamiento de los
bloqueos en el nivel de sesión.
• Sp_lock: ver la información de los bloqueos.

Manejo de transacciones, bloqueos y control de concurrencia de la practica


(laboratorio 10_ base datos).
En las configuraciones de seguridad como les he definido, UN usuario super
administrador sa con permisos sysadmin.
Se verifican las consultas definidas en el laboratorio para comenzar la parte de
trabajo con bloqueos de transacciones:

Se verifica la consulta de bloqueo


Verificación de bloqueos en la base de datos: 0, hasta ahora.
Una vez terminado las partes de las pruebas con los Sql procedemos a realizar las
pruebas de rendimiento y monitorio a la base de datos.
Primero se define el grupo de hilos a trabajar o usuarios a concurrir:
Se define la Conexión con el controlador jdb, quien permitirá acceder al Sql server:

Luego se define la conexión jdbc:

A continuación, se definen las peticiones a la base de datos:


Luego se anexa el componente gráfico:
Aquí una vez dato el Play en ejecutar, vemos como el gráfico comienza a tener
cambios y ver los resultados de las transacciones o consultas de forma gráficas
definida en los hilos de conexión.

Anexo el monitor de rendimiento de Sql server en función, dentro del menú


performance tool, programas del Pak de instalación de Sql server, server profile:
Para más detalle en el Server Profile, Menu tools, performance monitor.
Conclusión
El rendimiento de un servidor. Una supervisión eficaz implica tomar instantáneas
periódicas del rendimiento actual para aislar procesos que causan problemas y
recopilar datos de forma continua a lo largo del tiempo para realizar el seguimiento
de las tendencias de rendimiento. Microsoft SQL Server proporcionan herramientas
que le permiten ver las condiciones actuales de la base de datos y realizar un
seguimiento del rendimiento a medida que éstas cambian. El objetivo de supervisar
Bases de Datos, es evaluar el rendimiento de un Sistema Manejador de Base de
Datos (SMBD), para responder a las transacciones realizadas por los usuarios que
solicitan datos a través de un Sistema Computacional.