CONTROL DE CONCURRENCIA
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:
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:
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);
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.
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.
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