Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Recibo este error al azar cuando uno de mis sitios web está ocupado. Sé aproximadamente en qué conjuntos de tablas está sucediendo, pero en mi experiencia con otros programas, normalmente obtengo el SQL devuelto donde está ocurriendo el punto muerto. ¿Hay una bandera que debería encender para permitir que esto suceda?
Intentaré depurar el punto muerto en sí como un problema separado, ya que esta es mi pregunta principal por ahora.
Estoy usando SQL Server 2008 Standard Edition.
sql-server-2008
deadlock
webnoob
fuente
fuente
;-T1204
para que finalice el indicador de seguimiento y reinicie el servicio.-1
parámetro queDBCC TRACEON
significa global.Respuestas:
Los datos que necesita se registran en el seguimiento de eventos extendidos predeterminado.
Aunque ya no estará allí si ha reiniciado el servicio -eg para aplicar un indicador de rastreo o si el búfer ha ciclado mientras tanto.
Puede configurar su propio seguimiento de eventos extendidos que almacena el gráfico de punto muerto en un destino de archivo para un almacenamiento persistente no volátil. Código de ejemplo aquí . Personalmente, encuentro que el XML de gráfico de punto muerto es más amigable que la salida del indicador de seguimiento.
Editar
CAST(REPLACE(REPLACE(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)'), '<victim-list>', '<deadlock><victim-list>'), '<process-list>', '</victim-list><process-list>') AS XML) AS DeadlockGraph
en laSELECT
lista como se describe aquí .fuente
La respuesta aceptada no me funcionó constantemente. Aparentemente, se sabe que el buffer de anillo deja caer eventos en ciertas circunstancias.
ConnectItem
Problemas de Ring Buffer
Los archivos de eventos de registro system_health pueden analizarse (a partir de esta respuesta ):
El campo XdlFile puede guardarse en un archivo .xdl y leerse en SSMS. Probado en SQL Server 2012.
fuente