Sunteți pe pagina 1din 12

2019

Actividad AA10-2: Analizar


los procesos para la gestión
de transacciones, bloqueos y
el control de concurrencia
ejecutando la práctica
propuesta.

USER

PRESENTADO POR:

GRUPO GAES 73-6

PRESENTADO A:

ING. HUGO TRUJILLO


Tabla de contenido
Transacciones activas........................................................................................................................ 2
Consultas realizadas.......................................................................................................................... 3
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. ............................................... 4
3. Que sucede al hacer una consulta de todos los datos de la tabla eps si anteriormente se
ejecuta el siguiente comando. ........................................................................................................... 4
4. Que le falta a la siguiente transacción para que se efectúen los cambios en la base de
datos Secretaria de Salud. ................................................................................................................ 5
Transacciones y bloqueos ................................................................................................................. 7
¿Cómo es el manejo transaccional en una base de datos dependiendo del motor utilizado? ..... 7
¿Cuándo se genera un bloqueo? ...................................................................................................... 8
¿Cómo se libera un bloqueo? ........................................................................................................... 8
¿De qué forma se hace seguimiento a las transacciones en un determinado momento? ............ 9
¿Cuándo múltiples usuarios acceden en un mismo instante de tiempo a un recurso de la Base
de Datos, como gestiona el motor la concurrencia? ....................................................................... 9
BIBLIOGRAFIA ............................................................................................................................. 11
Laboratorio para el Manejo de Transacciones

1. Abra la máquina virtual donde tiene instalado Windows server 2003 sp 2 y SQL

Server 2008 R2, después inicio -> todos los programas -> SQL Server 2008 R2 ->

SQL Server Management Studio.

Nos conectamos al servidor -> en la parte izquierda -> base de datos -> la Base de

datos de la Secretaria de salud nombre “SecSalud”.

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.

Transacciones activas
Consultas realizadas

BEGIN TRANSACTION

INSERT INTO EPS VALUES('NUEVA',1);

UPDATE EPS

SET nombre = 'OtraNueva'

WHERE nombre = 'NUEVA'

COMMIT TRANSACTION

BEGIN TRY

BEGIN TRANSACTION

INSERT INTO EPS VALUES('NUEVA',1);

UPDATE EPS

SET nombre = 'OtraNueva'

WHERE nombre = 'NUEVA'

COMMIT TRANSACTION

END TRY

BEGIN CATCH

ROLLBACK TRAN

SELECT @@ERROR

END CATCH
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.

Al ejecutarlo en una nueva consulta genera un error:

Mens. 3902, Nivel 16, Estado 1, Línea 1

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 una transacción si no se han encontrado

errores. Por lo tanto, no hace ninguna modificación de las transacciones activas en la

base de datos de la secretaria de salud.

3. 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?

Nos genera un error:

Mens. 544, Nivel 16, Estado 1, Línea 2

No se puede insertar un valor explícito en la columna de identidad de la tabla 'EPS'

cuando IDENTITY_INSERT es OFF.


Esto ocurre porque SQL server no permite insertar datos a llaves primarias de forma

normal:

Se debe utilizzar el siguiente comando, para que deje insertar datos de forma de

inserción explicita en la tabla a una llave primaria:

el comando a utilizar es: SET IDENTITY_INSERT EPS

Las transacciones utilizan bloqueos para preservar la integridad de los datos durante su

ejecución. Si la transacción termina correctamente, se puede utilizar el comando

COMMIT para almacenar permanentemente sus modificaciones. De lo contrario, se

debe usar el comando ROLLBACK para cancelar todas las modificaciones y restaurar

la base de datos a su estado anterior.

4. 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, tipodeidentificacion, nombre, apellido,

fechaNacimiento, sexo)

VALUES (1112548, 1, ‘Pedro’, ‘Garcia’, 1982-01-27, ’M’)

INSERT INTO EPS (ideps, nombre, estadoeps)

VALUES (16,’confinacional’,4)

Inicialmente se debe agregar el comando: SET IDENTITY_INSERT [tabla] ON, para

que esta transacción pueda correr y arreglar campos tabla persona: tipoidentifiacion,

idPersona; quedando de esta forma:


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)

Si la transacción termina correctamente, utilizar el comando COMMIT para almacenar

permanentemente sus modificaciones.

5. 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 Explicita

INSERT INTO cliente (cedula, nombre)

VALUES (1,’sena’)

COMMIT TRANSACTION

INSERT INTO cliente (cedula, nombre) Automática

VALUES (1,’sena’)

INSERT INTO cliente (cedula, nombre) Explicita

VALUES (1,’sena’)

COMMIT TRANSACTION
Transacciones y bloqueos

Los motores de bases de datos, incorporan en su funcionalidad procedimientos,

acciones y muchas veces herramientas que permiten coordinar las acciones encaminadas al

manejo de transacciones asociadas a una Base de Datos, facilitando de esa forma el poder

dar respuesta a los siguientes interrogantes:

¿Cómo es el manejo transaccional en una base de datos dependiendo del motor

utilizado?

Una transacción es una unidad de trabajo compuesta por diversas tareas, cuyo resultado

final debe ser que se ejecuten todas o ninguna de ellas.

Por regla general en un sistema de base de datos todas las operaciones relacionadas

entre sí que se ejecuten dentro un mismo flujo lógico de trabajo, deben ejecutarse en

bloque. De esta manera si todas funcionan la operación conjunta de bloque tiene éxito,

pero si falla cualquiera de ellas, deberán retrocederse todas las anteriores que ya se

hayan realizado. De esta forma evitamos que el sistema de datos quede en un estado

incongruente.

SQL Server funciona en los modos de transacción siguientes:

Transacciones de confirmación automática

Cada instrucción individual es una transacción.

Transacciones explícitas

Cada transacción se inicia explícitamente con la instrucción BEGIN TRANSACTION y

se termina explícitamente con una instrucción COMMIT o ROLLBACK.


Transacciones implícitas

Se inicia implícitamente una nueva transacción cuando se ha completado la anterior,

pero cada transacción se completa explícitamente con una instrucción COMMIT o

ROLLBACK.

Transacciones de ámbito de lote

Una transacción implícita o explícita de Transact-SQL que se inicia en una sesión de

MARS (conjuntos de resultados activos múltiples), que solo es aplicable a MARS, se

convierte en una transacción de ámbito de lote. Si no se confirma o revierte una

transacción de ámbito de lote cuando se completa el lote, SQL Server la revierte

automáticamente.

¿Cuándo se genera un bloqueo?

El bloqueo asegura la integridad de los datos almacenados dentro de las bases de

datos. La gran finalidad de los bloqueos es que impiden los conflictos de actualización. Se

presentan cuando usuarios requieren la lectura o modificación de datos que en ese instante

están siendo modificados por otros usuarios.

¿Cómo se libera un bloqueo?

Utilizando el protocolo de bloqueo de dos fases con el cual se asegura, además de la

unicidad de los bloqueos para las transacciones incidentes, que aquéllos sean

proporcionados solo cuando ninguno ha sido adjudicado de vuelta, y que la devolución de

los bloques se elabore cuando ninguno esté por concederse. En otras palabras, mientras se

concedan bloqueos a transacciones entrantes, no puede ser liberado ninguno por

transacciones en curso. De manera similar, cuando se tenga el proceso de liberación de


bloqueos, no existirá ninguna transacción en curso que pueda acceder a un nuevo bloque de

la información que alguna vez liberó.

¿De qué forma se hace seguimiento a las transacciones en un determinado momento?

A través del Registro de Transacciones SQL Server cuyo principal propósito es

asegurar que su base de datos pueda restaurarse a un estado consistente en el caso de una

falla del sistema. Adicionalmente, es usado para realizar otras funciones como retrotraer

cuando un comando correspondiente es usado y soporta replicación transaccional y

soluciones de alta disponibilidad. SQL Server registra información acerca de cada

transacción hecha en el registro de transacciones antes de que los cambios sean escritos a la

base de datos. La cantidad de información registrada depende del modelo de recuperación

de su base de datos. SQL Server ofrece 3 modelos de recuperación diferentes: Completo,

Por medio de registros de operaciones masivas y Simple.?

¿Cuándo múltiples usuarios acceden en un mismo instante de tiempo a un recurso de

la Base de Datos, como gestiona el motor la concurrencia?

A través del control de transacciones concurrentes el cual brinda un eficiente

desempeño del Sistema de Administración de Base de Datos, puesto que permite

controlar la ejecución de transacciones que operan en paralelo, accediendo a

información compartida y, por lo tanto, interfiriendo potencialmente unas con otras.

El objetivo de este método de control de concurrencia es garantizar la no inferencia o

la propiedad de aislamiento de transacciones que se ejecutan de manera concurrente.

Los distintos objetivos atacan el problema garantizando que las transacciones se


ejecuten en un plan que sea serializarle, es decir, que el resultado sea equivalente a

el resultante de ejecutar un plan en serie.


BIBLIOGRAFIA

(4D TECHNOLOGIES)

(LLORENTE GALVIS & HINOJOSA CESPEDES , 2016)

(CampusMVP, 2014)

(Microsoft, 2017)

(ApexSQL, 2017)

(Dimitrijevic, 2019)

(Wikipedia, 2019)

(Minette Steynberg, 2015)

(Facultad de Informática)

S-ar putea să vă placă și