Ho un sito di clienti con due server SQL 2008r2 similmente configurati "A" e "C". Su entrambi i server i flag di traccia 1204 e 1222 sono abilitati e DBCC tracestatus
mostrano quanto segue su entrambi i server:
TraceFlag Status Global Session
1204 1 1 0
1222 1 1 0
3605 1 1 0
Su A i flag di traccia funzionano come previsto, quando si verifica un deadlock, nei registri errori vengono visualizzati sia i report deadlock 1204 che 1222. Tuttavia, su C, viene visualizzato solo il rapporto 1204, non otteniamo mai il rapporto 1222.
Per la mia vita non vedo alcun motivo per questa differenza. Ho entrambi cercato su Google ampiamente, e letto (e riletto) il documento MS su questi flag di traccia, e non riesco a trovare alcun rapporto di comportamento come questo, né alcun suggerimento su cosa potrebbe causarlo. L'unica cosa che si avvicina è l'affermazione occasionale che nessuna traccia di traccia funzionava, ma tutti si sono rivelati casi in cui avevano errori di battitura nei comandi di abilitazione. So che questo non è il caso qui perché ho usato DBCC TRACESTATUS per confermarlo.
Quindi, qualsiasi intuizioni in quello che potrebbe essere la causa solo il flag di traccia 1222 di non lavoro e / o come risolvere il problema sarebbe molto apprezzato.
Bene, ecco uno sviluppo interessante. Ogni volta che genera un deadlock (utilizzando questo codice: /programming/7813321/how-to-deliberately-cause-a-deadlock ), ottengo entrambi i rapporti di traccia nei log degli errori. Sono solo i deadlock "naturali" che si verificano ogni paio di giorni dalle applicazioni che sembrano attivare solo uno dei report deadlock. Non sono sicuro che ciò possa aiutare, c'è qualche motivo per credere che la traccia 1222 non riferisca su tutte le stesse condizioni di deadlock che 1204 farebbe?
xml_deadlock_report
già fa parte di system_health session
. Controlla questo post per maggiori dettagli. Controlla che per vedere se riesci a vedere i deadlock.
<inputbuf> BEGIN TRAN UPDATE dbo.DeadLockTest2 SET col1 = 1 UPDATE dbo.DeadLockTest SET col1 = 1 </inputbuf>
; mode="X" associatedObjectId="72057594039107584"
. Mi sto perdendo qualcosa ? Ho usatoSELECT 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'