Published on

November 16, 2018

Comprendiendo los bloqueos en SQL Server

Los bloqueos en SQL Server ocurren cuando dos o más procesos compiten por el mismo recurso en la base de datos y están tratando de obtener un bloqueo exclusivo en ese recurso. Esto puede llevar a una situación en la que los procesos no pueden avanzar, resultando en un bloqueo.

Cuando ocurre un bloqueo, SQL Server necesita elegir un proceso para convertirse en la víctima del bloqueo con el fin de proteger la integridad de la base de datos y resolver el bloqueo. Determinar qué procesos están causando el bloqueo puede ser desafiante, pero Microsoft proporciona una útil bandera de rastreo que se puede habilitar para recopilar información sobre los bloqueos.

Las banderas de rastreo -T1204 y -T3605 se pueden utilizar para escribir información sobre los bloqueos en el Registro de errores de SQL Server. Si sospecha que su base de datos está experimentando bloqueos, puede verificar la ventana de salida de SQL Server para el siguiente mensaje de error: “La transacción (ID de proceso 1602) estaba bloqueada en recursos de bloqueo con otro proceso y ha sido elegida como la víctima del bloqueo. Vuelva a ejecutar la transacción”.

Al ver el Registro de errores de SQL, puede obtener información más detallada sobre el bloqueo, incluyendo las tablas involucradas. Esto puede ser útil para identificar la causa raíz del bloqueo y tomar medidas apropiadas para prevenir que vuelva a ocurrir.

Si tiene un proceso crítico que está realizando mantenimiento de la base de datos y desea asegurarse de que no se convierta en una víctima del bloqueo, puede utilizar la sugerencia SET DEADLOCK PRIORITY en su código. Esta sugerencia le permite especificar la prioridad del proceso, reduciendo la probabilidad de que sea elegido como la víctima del bloqueo.

Si está experimentando problemas frecuentes de bloqueo en su entorno de producción, generalmente es seguro habilitar las banderas de rastreo -T1204 y -T3605 para capturar y registrar información relacionada con los bloqueos en el registro de errores. Sin embargo, siempre se recomienda probar estos cambios en un entorno no productivo primero para asegurarse de que no tengan efectos adversos.

Comprender los bloqueos y tomar medidas apropiadas para prevenirlos es crucial para mantener el rendimiento y la estabilidad de su base de datos de SQL Server. Al ser proactivo en la identificación y resolución de problemas de bloqueo, puede garantizar un funcionamiento suave y eficiente de su base de datos.

¡Gracias por leer!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.