See exactly what collided and why, the moment it happens, instead of reconstructing it from a partial error log entry hours later.
If you use SQL Diagnostic Manager for SQL Server (SQL DM) every day for dashboards and alerts, there’s a good chance your team still defaults to the SQL Server error log or standing up an ad hoc trace flag or Extended Events session: every time a deadlock gets reported. SQL DM already captures every deadlock automatically as it happens and visualizes it, and most teams have never turned that capability on. This guide covers what deadlock detection shows you, when to reach for it, what to configure before you need it, and the exact click paths in both the desktop console and the web console.
Why Deadlock Detection & Analysis Is Worth Your Time
A deadlock is a race condition: two or more sessions each hold a lock the other needs, and SQL Server kills one of them off as the “victim” to break the standoff. The whole thing can resolve itself in a fraction of a second, which is exactly why it’s so hard to catch after the fact. SQL DM removes the guesswork by watching for it continuously:
Automatic, continuous capture — no trace flag or Extended Events session to stand up in advance, and no need to guess which day it will happen.
A visualized conflict, not raw XML — both competing queries, the resources each session held or waited on, and which session was chosen as the victim.
The Blocking Chart — blocked sessions, lead blockers, and total deadlocks at a glance, right alongside your other performance data.
The Deadlock Sessions Report — full deadlock detail (SPID, host, login, wait resource, lock object/mode, and more), exportable in XDL format for deeper analysis.
A record you can hand off — export and hand the exact conflict to a developer without translating raw trace output first.
The short version
You don’t have to catch a deadlock in the act; SQL Diagnostic Manager already did. Once capture is on, the job left for a DBA or developer is deciding the fix: an indexing change, a query rewrite, or a transaction-isolation adjustment.
When to Use It
Situation
Where to go
What you’re looking for
A Deadlock alert fired in the Alerts view
Alerts view → select the deadlock alert → Show Deadlock Details
SPID, host, login, client application, database, wait resource, lock object/mode, and which session was the victim
The same application keeps failing transactions
Deadlock Report
Deadlock ID, SQL statement, and collection date filtered by instance, application, or database — is this recurring?
A self-contained XDL export you can hand off without walking them through raw trace output first
Routine health review; nothing is broken yet
Sessions → Blocking chart
Total deadlock counts trending up on a specific instance — a candidate for a structural fix before it becomes an incident
Before You Start: Six Considerations
Deadlock capture is a separate switch from the live Sessions views. The Sessions tab works as soon as an instance is monitored; collection is agentless. But the detailed deadlock record behind an alert depends on the Activity Monitor. If nobody has enabled Capture deadlocks, you’ll see that a deadlock happened without the detail behind it. Phase 1 below fixes that.
Set the blocked process threshold to at least 5 seconds. Collecting blocked-process information is resource-intensive on SQL Server. Enabling Capture Blocking sets this to 5 seconds automatically; IDERA recommends leaving it at 5 or higher, or your deadlock monitor effectively runs constantly. Changing this value in SQL DM also changes it on the monitored SQL Server instance itself.
Extended Events vs. SQL Trace. For instances running SQL Server 2012 or higher, the Activity Monitor uses Extended Events by default; lightweight and efficient. Only fall back to SQL Trace for pre-2008 instances, and expect some performance cost on the monitored server. Deadlock capture requires SQL Server 2005 or greater.
Deadlocks will not appear in the Blocking Tree. Deadlocks are circular by nature and have no lead blocker, so SQL DM doesn’t display them there. They do appear as counts in the Blocking Chart and in full detail in the Deadlock Sessions Report. Knowing this in advance saves you from concluding the tree is broken.
Capture and alerting are two different steps. Turning on Capture deadlocks gives you the detailed record; it doesn’t by itself set a threshold that pages anyone. Phase 4 below wires the actual Deadlock alert.
Exports are in XDL format. Deadlock Sessions Report exports open directly in SQL Server Management Studio or SQL Server Profiler; useful when the fix requires a developer’s review of a multi-statement transaction chain.
Watch it first (optional, ~5 minutes)
IDERA’s “How to Capture Deadlocks in SQL Diagnostic Manager for SQL Server” tutorial walks through the console in context. If you learn faster by watching someone drive, start there; the written steps below are the reference you come back to once you’re in the console. Watch on YouTube
Part 1: Step-by-Step in the Desktop Console
Four phases. Phase 1 is one-time configuration per instance. Phases 2 and 3 are the workflow you’ll use during and after an incident. Phase 4 makes the alert point you here.
Phase 1: Enable Deadlock Capture
Do this once per monitored instance, ideally before you need it. The live Sessions views work without it; the detailed deadlock record does not.
In the SQL Diagnostic Manager desktop console, find the instance in the Servers sidebar.
Right-click the instance and select Properties.
In the Monitored SQL Server Properties window, click the Activity Monitor tab.
Select Enable the Activity Monitor. Nothing below this point applies until this is checked.
Under non-query activities, select Capture deadlocks (SQL 2005+). This is what lets the Deadlock alert and the Deadlock Sessions Report show SPID, host, login, client application, database, wait time, wait resource, lock object, lock mode, lock owners, and lock waiters; instead of just “a deadlock occurred.”
The Activity Monitor tab of the Monitored SQL Server Properties window, with Capture Blocking and Capture deadlocks enabled.
Also select Capture Blocking (SQL 2005+) while you’re here. Deadlocks are a special case of blocking, and this is what gives you the full blocking-chain context (and the Blocked Process Threshold field in the next step) alongside deadlock detail.
Optionally select Capture Autogrow, the third non-query event type; it feeds the autogrow alert with log and data growth detail and has no bearing on deadlock capture.
Confirm the collection mechanism. For SQL Server 2012 and higher, leave Use Extended Events selected. Choose Use SQL Trace only for pre-2008 instances, and expect some performance cost on the monitored server.
Check the Blocked Process Threshold value, which appears once Capture Blocking is enabled. It defaults to 5 seconds. Keep it at 5 or higher.
The Blocked Process Threshold field, which appears once Capture Blocking is enabled, and defaults to 5 seconds
Click OK to save, then repeat for your remaining production instances.
Heads up
Modifying the Activity Monitor’s blocked process threshold automatically changes the blocked process threshold value on the monitored SQL Server instance itself. This is a server-level change, not just a SQL DM setting — coordinate it if someone else owns that instance.
Phase 2: Review a Captured Deadlock
Click the monitored SQL Server instance in the Servers sidebar, then click the Sessions tab.
Click Sessions → Blocking. Deadlocks don’t populate the Blocking Tree (they have no lead blocker), but they do show up in the Blocking chart as a Total Deadlocks count alongside blocked sessions and lead blockers, at a given point in time.
The Sessions tab in the SQL Diagnostic Manager desktop console, showing the Summary, Details, Locks, and Blocking views — the Blocking view is where deadlock counts appear.
If a Deadlock alert brought you here, right-click the alert in the Alerts view and select Show Deadlock Details for the full record.
You can also reach the same information from the Blocking view itself; open the Deadlock Sessions Report (Deadlock Reports).
Review the deadlock detail: Session ID, Status, Host Name, User Name, Execution Context, Application, Database, Last Batch Started, Last Batch Completed, Last Transaction Started, Transaction ID, Transaction Name, Open Transactions, Wait Time (ms), Wait Type, and Wait Resource.
For an incident that already ended, use the History Browser to rewind to the point in time the deadlock alert fired and see which sessions were involved, this is how you investigate the 2 a.m. alert at 9 a.m.
Phase 3: Export, Hand Off, and Spot Patterns
From the Deadlock Sessions Report, export the deadlock detail in XDL format.
Open the export in SQL Server Management Studio or SQL Server Profiler, or hand it directly to a developer or application owner; it’s a precise, self-contained record that doesn’t need a DBA to translate raw trace output first.
For historical analysis across many occurrences, open the Deadlock report. It filters by Instance Name, Application Name, Database Name, SQL Statement, Collection Date, XDL Data, Deadlock ID, Login Name, and Host Name, and lists every deadlock occurrence historically.
Look specifically for deadlocks recurring on the same object, application, or time of day; that’s the signal a query rewrite, an indexing change, or a transaction-isolation adjustment addresses the root cause rather than just the symptom.
Phase 4: Wire the Deadlock Alert
Deadlock capture on its own is reactive; it records the detail once you go looking. The alert is what makes it proactive.
Right-click the instance in the Servers sidebar and select Configure Alerts.
In the Alert Configuration window, select the Deadlock metric from the list.
Set warning and critical thresholds that reflect your workload, there’s no universal correct value; a reporting instance and an OLTP instance have very different tolerances.
While you’re in there, also set Blocked Sessions (Count), Blocking Session Wait Time (Seconds), and Oldest Open Transaction (Minutes); a transaction left open for twenty minutes is usually the cause of a blocking chain rather than a victim of one, and deadlocks often show up alongside these.
Put a recurring review on someone’s calendar to check the Blocking chart on your two or three busiest instances. This is the habit that turns deadlock detection from a fire extinguisher into an early-warning system.
Part 2: The Same Workflow in the Web Console
The 14.1 web console presents session and deadlock data through the single instance dashboard. The information is much the same; the navigation and filtering are different, and there’s no Trace Session, Kill Session, or Deadlock Sessions Report export here; those live in the desktop console.
Open the web console and navigate to the single instance view for the instance you care about.
Click the Sessions tab. It contains two tabs: Listing and Charts.
On Listing, use the Session Filter: Sessions (everything), Blocked, or Blocking. During an incident, click Blocking first.
The Session Filter narrows the Listing view to all sessions, blocked sessions, or blocking sessions
Narrow further with the Column Filter: select a column, click the options icon next to its name, select Filter, and enter or select your criteria.
The Column Filter lets you filter the Listing view by specific criteria for any column
Use the Time Range Filter to review session state within a specific window rather than only right now; the web console’s answer to reviewing an incident after the fact.
The Time Range Filter sets the start and end date and time for the session data shown
Switch to the Charts tab for the graphical view. The Blocked Sessions chart lists Blocked Sessions, Lead Blockers, and Total Deadlocks for the selected instance, so you can see deadlock counts trend over time alongside blocking.
The Charts tab in the SQL DM 14.1 web console, including the Blocked Sessions chart (blocked sessions, lead blockers, and total deadlocks).
When you find a deadlock or blocking chain you need to trace, kill, or export in XDL, switch to the desktop console for those actions.
Reference
Deadlock-Related Views & Reports at a Glance
View / report
What it gives you
Reach for it when
Blocking chart (Sessions → Blocking)
Blocked sessions, lead blockers, and total deadlocks at a given point in time
You want a quick read on whether deadlocks are trending up on an instance
Deadlock Sessions Report
Full deadlock detail; SPID, status, host, login, execution context, app, database, transaction detail, wait time/type/resource. Exportable in XDL
You need to investigate or hand off a specific deadlock
Deadlock Report
Historical list of every deadlock occurrence, filterable by instance, application, database, SQL statement, collection date, deadlock ID, login, and host
You’re looking for a recurring pattern across many occurrences
Alerts view → Show Deadlock Details
The same detailed record, reached from the alert that fired
A Deadlock alert just brought you here
Deadlock-Related Alerts
Configure these by right-clicking the instance and selecting Configure Alerts.
Alert
What it measures
Deadlock
Two processes each waiting for a resource held by the other
Blocked Sessions (Count)
Sessions blocked by other sessions holding requested locks
Blocking Session Wait Time (Seconds)
How long a session has been blocking other sessions
Oldest Open Transaction (Minutes)
Longest time between a BEGIN TRANSACTION and its COMMIT or ROLLBACK
What Deadlock Detection Accelerates vs. What You Decide
Deadlock detection can
You must determine
Capture every deadlock automatically and continuously, with no trace to configure in advance
Whether a recurring pattern warrants a structural fix instead of a one-off resolution
Visualize both competing queries, the resources each session held, and the victim
Whether an indexing change, a query rewrite, or a transaction-isolation adjustment is the right fix
Export a self-contained XDL record for direct developer hand-off
Who reviews it and how quickly, once it’s exported
Show deadlock counts trending on the Blocking chart over time
What an acceptable frequency looks like for that specific workload
Source Documentation
Deadlock alert — what the alert shows and how to resolve it
Set activity monitor options — Capture deadlocks, Capture Blocking, Extended Events vs. SQL Trace, blocked process threshold