Sei sulla pagina 1di 7

TAREA 1

UNIDAD 4

GRUPO: 71

CARRERA: INGENIERIA EN SISTEMAS COMPUTACIONALES

ALUMNO: OSCAR ALEJANDRO DE LEON HERNANDEZ

N°. DE CONTROL: 16380554


PROFESOR: GUADALUPE GERONIMO GERONIMO
INDICE
Contenido

Transacciones Distribuidas
Transacciones en SQL Server……………………………03
Procesamiento de transacciones. …………………….…03
Supervisión de transacciones. ……………………..……04
Codificación de transacciones eficientes. ………………04
Cómo definir transacciones………………………………04
Manejo de Bloqueos en Transacciones en SQL Server
Bloqueos……………………………………………………05
Administración de bloqueos………………………………06

Conclusiones………………………………………………………..…..07

Bibliografía…………………………………………………………........07

2
Transacciones Distribuidas
Transacciones en SQL Server.
Conocer la gestión de transacciones que realiza SQL Server, qué son y cómo
funcionan, es la clave para desarrollar aplicaciones eficaces y eficientes que se
conectan a un gestor de bases de datos (SGBD) para consultar y modificar datos,
con usuarios accediendo concurrentemente para realizar acciones de distinta
naturaleza sobre los mismos (no es lo mismo consultar información que
actualizarla) y teniendo que gestionar acciones de actualización que afectan a
varios datos a la vez.
En SQL Server las instrucciones equivalentes a las genéricas que acabamos de
ver son:
 BEGIN TRANSACTION o BEGIN TRAN: marca el inicio de una
transacción. TRAN es un sinónimo de TRANSACTION y se suele usar
más a menudo por abreviar.
 ROLLBACK TRANSATION o ROLLBACK TRAN: fuerza que se deshaga
la transacción en caso de haber un problema o querer abandonarla. Cierra
la transacción.
 COMMIT TRANSACTION O COMMIT TRAN: confirma el conjunto de
operaciones convirtiendo los datos en definitivos. Marca el éxito de la
operación de bloque y cierra la transacción.
Los niveles de aislamiento que nos ofrece SQL Server son:
 SERIALIZABLE: No se permitirá a otras transacciones la inserción,
actualización o borrado de datos utilizados por nuestra transacción. Los
bloquea mientras dura la misma.
 REPEATABLE READ: Garantiza que los datos leídos no podrán ser
cambiados por otras transacciones, durante esa transacción.
 READ COMMITED: Una transacción no podrá ver los cambios de otras
conexiones hasta que no hayan sido confirmados o descartados.
 READ UNCOMMITTED: No afectan los bloqueos producidos por otras
conexiones a la lectura de datos.
 SNAPSHOT: Los datos seleccionados en la transacción se verán tal y
como estaban al comienzo de la transacción, y no se tendrán en cuenta
las actualizaciones que hayan sufrido por la ejecución de otras
transacciones simultáneas.
La instrucción SET TRANSACTION ISOLATION LEVEL nos permite cambiar el
nivel de aislamiento.
Procesamiento de transacciones.
Una transacción es una unidad lógica de trabajo que tiene ciertas propiedades
conocidas como propiedades ACID: atomicidad, coherencia, aislamiento y
permanencia.

3
Existen tres formas de llevar a cabo este procesamiento: auto confirmación,
explícita e implícita
Supervisión de transacciones.
La supervisión de transacciones se apoya en el registro de transacciones. Para
llevar la cuenta del número de transacciones abiertas, SQL Server utiliza una
variable global de sesión denominada “@@trancount”.
Codificación de transacciones eficientes.
A continuación, se enumeran algunas reglas que se deben observar al programar
transacciones:
 No devolver conjuntos de resultados dentro de una transacción. Dicha
acción prolonga la transacción innecesariamente. Se debe realizar la
recuperación y análisis de los datos fuera de la transacción.
 Se debe evitar, en la medida de lo posible, pedir al usuario una respuesta
cuando se haya iniciado una transacción. En caso de error se debe cerrar
primero la transacción y después mostrar el mensaje de error.
 La transacción debe ser lo más corta posible. Se debe abrir justo en el
momento en el que se deseen realizar las modificaciones y cerrarla justo
después de haberlas realizado.
 Iniciar y terminar transacciones es un proceso que necesita una gran
cantidad de trabajo por parte del servidor, por ello se deben abrir
transacciones únicamente cuando sea necesario.
Cómo definir transacciones
Por regla general en los gestores de datos relacionales modernos disponemos
de tres tipos de transacciones según la forma de iniciarlas:
 De confirmación automática: el gestor de datos inicia una transacción
automáticamente por cada operación que actualice datos. De este modo
mantiene siempre la consistencia de la base de datos, aunque puede
generar bloqueos.
 Implícitas: cuando el gestor de datos comienza una transacción
automáticamente cada vez que se produce una actualización de datos,
pero el que dicha transacción se confirme o se deshaga, lo debe indicar
el programador.
 Explícitas: son las que iniciamos nosotros "a mano" mediante
instrucciones SQ. somos nosotros, los programadores, los que indicamos
qué operacio0nes va a abarcar.
Una transacción explícita se define de manera general con una instrucción que
marca su inicio, y dos posibles instrucciones que marcan su final en función de
si debe tener éxito o debe fracasar en bloque.
Cada sistema gestor de bases de datos tiene sus pequeñas particularidades,
pero podemos escribir con un pseudo-código, la sintaxis de una transacción
genérica:

4
BEGIN TRAN
Operación 1...
Si fallo: ROLLBACK TRAN
Operación 2....
Si fallo: ROLLBACK TRAN...
Operación N....
Si fallo: ROLLBACK TRAN
COMMIT TRAN
Es decir, se define el comienzo de una transacción, se comprueban posibles
errores en cada paso, echando atrás todo el proceso (se le suele llamar "hacer
un Rollback"), o confirmando el conjunto de operaciones completas al final del
todo si no ha habido problemas (en la jerga habitual se suele hablar de "hacer
un Commit").
De hecho, no suele ser necesario comprobar los errores por el camino ya que
por regla general el gestor de datos si detecta un error en cualquiera de los pasos
dentro de una transacción, realizará un Rollback automático de toda la
operación.

Manejo de Bloqueos en Transacciones en SQL Server


Bloqueos
Los bloqueos pueden impedir las siguientes situaciones que comprometen la
integridad de las transacciones:
Actualización perdida: Una actualización se puede perder cuando una
transacción sobrescribe los cambios de otra transacción. Por ejemplo, dos
usuarios pueden actualizar la misma información, pero sólo la última
modificación queda reflejada en la base de datos.
Dependencia no confirmada (lectura no confirmada): Una dependencia no
confirmada ocurre cuando una transacción lee los datos sin confirmar de otra
transacción. La transacción puede hacer cambios según datos que no son
correctos o que no existen.
Análisis incoherente (lectura no repetible): Un análisis incoherente ocurre
cuando una transacción lee la misma fila varias veces y cuando, entre las dos (o
más) lecturas, otra transacción modifica esa fila. Como la fila se ha modificado
entre lecturas de una misma transacción, cada lectura produce valores
diferentes, lo que causa incoherencias.
Por ejemplo, un editor lee el mismo documento dos veces, pero de una lectura a
otra, el escritor vuelve a escribir el documento. Cuando el editor lee el documento
por segunda vez, ha cambiado por completo. La lectura original no se puede

5
repetir, lo que produce confusión. Sería mejor que el editor sólo leyera el
documento después de que el escritor hubiera terminado de escribirlo.
Lecturas Fantasmas: Las lecturas fantasmas pueden ocurrir cuando las
transacciones no están aisladas unas de otras. Por ejemplo, se podría hacer una
actualización en todos los registros de un regional mismo tiempo que otra
transacción inserta un nuevo registro de esa región. La próxima vez que la
transacción lea los datos, aparecerá un registro adicional.

Administración de bloqueos
SQL Server permite controlar las opciones de bloqueo en el nivel de sesión
mediante el establecimiento del nivel de aislamiento de las transacciones.
Nivel de aislamiento de las transacciones
El nivel de aislamiento protege una transacción especificada de otras
transacciones. Utilice el nivel de aislamiento de la transacción para establecer el
nivel de aislamiento de todas las transacciones de una sesión. Al establecer el
nivel de aislamiento, se especifica el comportamiento predeterminado de los
bloqueos en todas las instrucciones de la sesión.
Establecer niveles de aislamiento de transacción permite a los programadores
aceptar un riesgo mayor de problemas de integridad a cambio de un mayor
acceso simultáneo a los datos. Cuanto mayor sea el nivel de aislamiento, durante
más tiempo se mantienen los bloqueos y más restrictivos son éstos.
El nivel de aislamiento de la sesión se puede suplantar en instrucciones
individuales mediante una especificación de bloqueo. También se puede utilizar
la instrucción DBCC USEROPTIONS para especificar el aislamiento de la
transacción en una instrucción.
Tiempo de espera para los bloqueos
Con la opción SET LOCK_TIMEOUT, se puede establecer la cantidad máxima
de tiempo que SQL Server permite que una transacción espere la liberación de
un recurso bloqueado.

6
Conclusión
SQLCLR es una gran tecnología que habilitará diversos escenarios novedosos.
El uso de ADO.NET dentro de SQLCLR es una mezcla de gran eficacia que
permitirá combinar el intenso procesamiento con el acceso a datos en servidores
locales y remotos, al mismo tiempo que se mantiene la exactitud transaccional.
Al igual que sucede con cualquier otra tecnología, SQLCLR cuenta con un
dominio de aplicación específico. No todos los procedimientos necesitan volver
a escribirse en SQLCLR y utilizar ADO.NET para tener acceso a la base de
datos; más bien al contrario, en la mayoría de los casos T-SQL realizará una
excelente tarea. No obstante, en aquellos casos en los que son necesarios la
lógica sofisticada o las avanzadas bibliotecas dentro de SQL Server, SQLCLR y
ADO.NET hacen bien su trabajo.

Bibliografía
https://prezi.com/3ud0unnmqvzp/manejo-de-transacciones-distribuidas/
https://www.dbasupport.com.mx/index.php/foro/81-c10-sybase/c12-
general/487-transacciones-distribuidas
https://docs.microsoft.com/es-es/dotnet/framework/data/adonet/distributed-
transactions
https://docplayer.es/2178640-Administracion-de-transacciones-y-bloqueos.html
https://docplayer.es/3516311-Transacciones-y-bloqueos-en-sql-server.html
https://www.campusmvp.es/recursos/post/Fundamentos-de-SQL-
Transacciones.aspx
https://docs.microsoft.com/es-es/sql/2014-toc/sql-server-transaction-locking-
and-row-versioning-guide?view=sql-server-2014

Potrebbero piacerti anche