In SQL Server 2012, Deadlock graph is captured in system_health by default.
Under Management, right click on package0 under system_health, View target Data
Filtered by name contains xml
In SQL Server 2008 R2
Deadlock events can be queried from dynamic management views. I use the following query to get deadlock graph.
;with SystemHealth
As(
Select cast(target_data as xml)as sessionxml
from sys.dm_xe_session_targets st
inner join sys.dm_xe_sessions s on s.address = st.event_session_address
where name ='system_health'
)
Select Deadlock.value('@timestamp','datetime')as DeadlockDateTime
,cast(Deadlock.value('(data/value)[1]','varchar(max)') as xml)as DeadlockGraph
Into uat.dbo.dba3
from systemhealth
Cross apply sessionxml.nodes('//RingBufferTarget/event')as T(deadlock)
where deadlock.value('@name','nvarchar(128)') ='xml_deadlock_Report'
Enjoy my script.