• Have you pulled the deadlock information (e.g., by enabling trace flag 1222)? That should clear up what is going on, as you'll be able to see exactly which locks each session owns and is waiting on.

    If it's a system where enabling that trace flag or getting the deadlock graph from a trace means waiting on approval, then you could still have a chance of pulling the information for recent deadlocks from the ring buffers.

    In 2008 you can try this:

    SELECT OccurredAt,CAST(event_data.value('(event/data/value)[1]',

    'varchar(max)') AS XML) AS DeadlockGraph

    FROM ( SELECT Xevent.value('@timestamp','datetime') as OccurredAt,XEvent.query('.') AS event_data

    FROM ( -- Cast the target_data to XML

    SELECT CAST(target_data AS XML) AS TargetData

    FROM sys.dm_xe_session_targets st

    JOIN sys.dm_xe_sessions s

    ON s.address = st.event_session_address

    WHERE name = 'system_health'

    AND target_name = 'ring_buffer'

    ) AS Data -- Split out the Event Nodes

    CROSS APPLY TargetData.nodes('RingBufferTarget/

    event[@name="xml_deadlock_report"]')

    AS XEventData ( XEvent )

    ) AS tab ( OccurredAt,event_data )

    order by OccurredAt desc

    Cheers!