Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Estou recebendo esse erro aleatoriamente quando um dos meus sites fica ocupado. Eu sei aproximadamente em quais conjuntos de tabelas isso está acontecendo, mas em minha experiência com outros programas, normalmente recebo o SQL retornado onde o impasse está acontecendo. Existe um sinalizador que devo ativar para permitir que isso aconteça?
Vou tentar depurar o próprio impasse como um problema separado, pois essa é minha principal pergunta por enquanto.
Estou usando o SQL Server 2008 Standard Edition.
Os dados necessários são registrados no rastreamento de eventos estendidos padrão.
Embora não esteja mais lá se você tiver reiniciado o serviço - por exemplo, para aplicar um sinalizador de rastreamento ou se o buffer tiver alternado nesse meio tempo.
Você pode configurar seu próprio rastreamento de eventos estendidos que armazena o gráfico de conflito em um destino de arquivo para armazenamento não volátil persistente. Exemplo de código aqui . Pessoalmente, acho o XML do gráfico de deadlock mais amigável do que a saída do sinalizador de rastreamento.
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
naSELECT
lista conforme descrito aqui .A resposta aceita não funcionou para mim de forma consistente. O buffer de anel aparentemente é conhecido por descartar eventos em certas circunstâncias.
ConnectItem
Problemas de buffer de toque
Os arquivos de eventos de log system_health podem ser analisados (a partir desta resposta ):
O campo XdlFile pode ser salvo em um arquivo .xdl e lido no SSMS. Testado no SQL Server 2012.