Eu tenho um site de cliente com dois SQL Server 2008r2 configurados de forma semelhante "A" e "C". Nos dois servidores, os sinalizadores de rastreamento 1204 e 1222 são ativados e DBCC tracestatus
mostram o seguinte nos dois servidores:
TraceFlag Status Global Session
1204 1 1 0
1222 1 1 0
3605 1 1 0
Em A, os sinalizadores de rastreamento funcionam conforme o esperado, quando ocorre um conflito, obtemos os relatórios de conflito 1204 e 1222 nos logs de erros. No entanto, em C, apenas o relatório 1204 aparece, nunca recebemos o relatório 1222.
Pela minha vida, não vejo razão para essa diferença. Eu pesquisei isso extensivamente no Google e li (e reli) o documento MS sobre esses sinalizadores de rastreamento, e não consigo encontrar nenhum relatório de comportamento como esse, nem dicas sobre o que pode causar isso. A única coisa que se aproxima é a alegação ocasional de que nenhum sinalizador de rastreamento estava funcionando, mas todos acabaram sendo casos em que houve erros de digitação nos comandos de ativação. Sei que esse não é o caso aqui, porque usei o DBCC TRACESTATUS para confirmá-lo.
Portanto, qualquer percepção sobre o que pode estar fazendo com que apenas o sinalizador de rastreamento 1222 não funcione e / ou como corrigi-lo seria muito apreciada.
Bem, aqui está um desenvolvimento interessante. Sempre que eu mesmo gerar um deadlock (usando este código: /programming/7813321/how-to-deliberately-cause-a-deadlock ), recebo os dois relatórios de rastreamento nos logs de erros. São apenas os impasses "naturais" que ocorrem a cada dois dias nos aplicativos que parecem acionar apenas um dos relatórios de impasse. Não tenho certeza se isso ajuda, existe alguma razão para acreditar que o rastreio 1222 não reportaria todas as mesmas condições de impasse que 1204 faria?
xml_deadlock_report
já faz parte do system_health session
. Verifique esta postagem para mais detalhes. Verifique se você pode ver os impasses.
<inputbuf> BEGIN TRAN UPDATE dbo.DeadLockTest2 SET col1 = 1 UPDATE dbo.DeadLockTest SET col1 = 1 </inputbuf>
; mode="X" associatedObjectId="72057594039107584"
. Estou esquecendo de algo ? Eu useiSELECT CAST(xet.target_data AS XML) AS XMLDATA FROM sys.dm_xe_session_targets xet JOIN sys.dm_xe_sessions xe ON (xe.address = xet.event_session_address) WHERE xe.name = 'system_health'