Sei sulla pagina 1di 13

AA9-EV2 MANEJO DE TRANSACCIONES, BLOQUEOS Y CONTROL DE CONCURRENCIA EJECUTANDO LA PRÁCTICA PROPUESTA.

FRANCISCO JAVIER OREJUELA VALENCIA

ESPECIALIZACIÓN TECNOLÓGICA EN GESTIÓN Y SEGURIDAD BASES DE DATOS.

SERVICIO NACIONAL DE APRENDIZAJE SENA

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

BEGIN TRANSACTION INSERT

INTO EPS (ideps, nombre, estadoeps)

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 porque SQL server no permite insertar datos a llaves primarias de forma normal:

Hay que 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

EJ:

BEGIN TRANSACTION

SET IDENTITY_INSERT EPS ON

INSERT INTO EPS (ideps, nombre, estadoeps)

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.

BEGIN TRANSACTION

INSERT INTO persona (idPersona, tipoidentificacion, nombre, apellido, fechaNacimiento, sexo)

VALUES (1112548, 1, 'Pedro', 'Garcia', 1982-01-27, 'M');

INSERT INTO EPS (nombre, estadoeps)

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:
BEGIN TRANSACTION

SET IDENTITY_INSERT EPS ON

INSERT INTO Persona (idPersona, tipoidentificacion, nombre, apellido, fechaNacimiento, sexo)

VALUES (111245548, 1, 'Pedro', 'Garcia', 1982-01-27, 'M')

INSERT INTO EPS (ideps, nombre, estadoeps)

VALUES (16,'confiacional',4)

 En el siguiente cuadro especificar para cada tipo de transacción si es implícita, explicita o automática.

SCRIPT TIPO DE TRANSACCIÓN


BEGIN TRANSACTION INSERT INTO cliente (cedula, EXPLICITAS
nombre) VALUES (1,’sena’)COMMIT TRANSACTION
INSERT INTO cliente (cedula, nombre) VALUES AUTOMATICAS
(1,’sena’)
INSERT INTO cliente (cedula, nombre) VALUES EXPLICITAS
(1,’sena’)COMMIT TRANSACTION

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.
Verificación de consultas definidas en el laboratorio:
Verificación consulta de bloqueo
Verificación de bloque en la base de datos = 0
En este aparte si prueba el Sp lock ahora con bloqueo a tabla EPS

Definición de la Conexión con el controlador jdb, quien permitirá acceder al Sql server:
Definición de la conexión jdbc:
URL BD: jdbc:pc-PC://localhost:1433;databaseName=Sec_salud

DRIVER JDBC: com.microsoft.sqlserver.jdbc.SQLServerDriver

USUARIO: pc-PC

Definición de peticiones a la base de datos:


Añadir componente grafico

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.
Reporte de verificación de datos y concurrencia

Gráfica tipo spline que permite ver en una secuencia más lineal, la concurrencia de las transacciones medidas por el Jmeter
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:

detalle en el Server Profile, Menu tools, performance monitor


 Abra una nueva consulta. Use la base de datos Secretaria de Salud En una nueva consulta ejecute sp_lock y
revise los resultados.

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.

 laboratorio: Analizar el siguiente script

Use SecSalud:

BEGIN TRAN
PRINT 'Transacciones Activas'
SELECT @@TRANCOUNT
SELECT * FROM EPS

PRINT 'Actualizamos la tabla EPS'


SELECT * FROM EPS
UPDATE EPS SET nombre = 'SALUDCOOPx' WHERE nombre =
'SALUDCOOP'
PRINT 'Miramos la actualización'
SELECT * FROM EPS WHERE ideps = 1
PRINT 'Transacciones Activas'
PRINT @@TRANCOUNT
SELECT * FROM EPS
PRINT 'Identificador de bloqueo'
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 está 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 cláusula IDENTITY _INSERT

Potrebbero piacerti anche