Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AA10 – EV2
TRANSACTION y verificar de nuevo la cantidad de transacciones activas y determinar que hace este
comando en la base de datos SecretariaSalud
RESULTADO = Mens. 3902, Nivel 16, Estado 1, Línea 9 La solicitud COMMIT TRANSACTION no tiene la
correspondiente BEGIN TRANSACTION.
Este comando por sí solo no hace nada, debe ser acompañado de otras cláusulas, dado que este
comando se utiliza para Finalizar la transacción si no se han encontrado errores. Que sucede al hacer una
consulta de todos los datos de la tabla EPS si anteriormente se ejecuta el siguiente comando:
Esto ocurre porque SQL server no permite insertar datos a llaves primarias de forma normal
Para la cancelación de la transacción anterior ¿qué comando se debe utilizar? Es necesario utilizar el
comando SET IDENTITY_INSERT EPS ON para que deje insertar datos de forma de inserción explicita
en la tabla a una pk.
Ejemplo:
BEGIN TRANSACTION
SET IDENTITY_INSERT EPS ON
INSERT INTO EPS (ideps, nombre, estadoeps)
VALUES (15,’confisena’,1)
Al utilizar el comando ya se puede hacer los insert en la tabla EPS.
al revisar que se quedó guardada nos muestra el nuevo registro, pero en mi caso demoro bastante la
consulta de la tabla EPS
¿Qué 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);
RESPUESTA= 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)
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
Abra una nueva consulta. Use la base de datos Secretaria de Salud En una nueva consulta ejecute
sp_lock y revise los resultados.
Abra informe de transacciones de bloqueo para verificar que no hay ningún bloqueo activo. Clic
derecho en su bd -> informe -> informe estándar -> Todas las transacciones de bloqueo.
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 esta especificado en el sql.
CONCURRENCIA DE TRANSACCIONES
Optimista: Deja realizar modificaciones de los datos y se persisten (commitado). Cuando se vana
persistir se verifica que no se han modificado por otras transacciones simultáneamente; en cuyo caso
produce unerror.
Pesimista: Para los datos modificados, realizar un bloqueo de los mismos. Impendiendo que otras
transacciones realicen cambios de esos datos.
READ_COMMITTED_SNAPSHOT:Evita el problemadelREADCOMMITED.
Crea un estado en la base de datos; de esta manera la transacción lee los datos referidos a ese
estado. No impide que otras transacciones modifiquen los datos leídos por la nuestra.
REPEATABLE READ: Evita el problema del READ COMMITED. REPEATABLE
En SQL Server el tipo de concurrencia es pesimista. El bloqueo se activa al modificar los datos; no al
leerlos. Si queremos activarlo en su lectura debemos usar la cláusula WITH UPDLOCK.
El nivel del Aislamiento en SQL SERVER se indica con la instrucción SET TRANSACTION ISOLATION LEVEL.
Por defecto es READ COMMITTED. En SQL SERVER cuando indicamos READ COMMITTED, puede ser READ
COMMITTED o READ COMMITED SNAPSHOT. Esto se determina en función de la configuración de la
base de datos:
En SQL AZURE solo existe READ COMMITTED SNAPSHOT. No se puede desactivar con la
configuración SET READ_COMMITTED_SNAPSHOT OFF.
Se ha permitido desarrollar una herramienta de análisis de resultados similar a la que proporcionan las
herramientas comerciales. Las principales ventajas que aporta son:
Permite estudiar de manera gráfica la relación de los diferentes indicadores de las pruebas,
generando automáticamente gráficas de rendimiento. Facilita la Identificación de los
posibles puntos de saturación para detectar "cuellos de botella".
Para este laboratorio, se Utilizaron parámetros de configuración en el base de datos, los cuales por
motivo de facilidad y configuración de mi equipo.
CREAMOS PETICION 2
CREAMOS PETICION 3
1 WIN-DD 24W
1 WIN-DD 1879210 LCK Id S Ñ O& 24W
1 WIN-DD MW
1 WIN-DD RUNNING SELECT 24W
1 WIN-DD 24W
1 WIN-DD 24W
1 WIN-DD 24W
1 WIN-DD 24W