SQL Server 2000: depuración de interbloqueos
-
09-06-2019 - |
Pregunta
Estoy buscando sugerencias sobre cómo depurar y solucionar problemas de interbloqueo en una base de datos SQL Server 2000.Me recomendaron usar los indicadores de seguimiento 1024 y 3605, y encontré que me dan lo siguiente:
1024: este indicador de seguimiento devuelve el tipo de bloqueos que participan en el punto muerto y el comando actual afectado.
3605: este indicador de seguimiento envía resultados de seguimiento al registro de errores.
Los procedimientos almacenados, tablas e índices específicos aún deben descubrirse, por lo que el objetivo es utilizar estos indicadores de seguimiento para hacerlo.Y luego, a partir de ahí, sabré mejor qué índices necesitan ajuste, sugerencias de bloqueo para consultas de ajuste y posibles errores de sproc que corregir.
¿Alguna otra sugerencia o historia de guerra con final feliz sobre cómo resolver todo esto hasta convertirlo en un problema común?
Solución
Aquí está la Biblia sobre la solución de problemas de interbloqueos: http://blogs.msdn.com/bartd/archive/2006/09/09/Deadlock-Troubleshooting_2C00_-Part-1.aspx
Otros consejos
Script muy útil para analizar puntos muertos: http://www.sommarskog.se/sqlutil/aba_lockinfo.html
Una vez que conozca las declaraciones SQL involucradas, un análisis de código seguramente será útil.Algunas reglas básicas comprueban el orden en el que se accede a las filas y el nivel de aislamiento utilizado para las declaraciones SQL.Un seguimiento del perfilador puede ayudar mucho.
La mayoría de las veces, se debe a que un lector intenta obtener un bloqueo compartido en un recurso bloqueado exclusivamente por un escritor.