Skip to content

Commit 8b7f127

Browse files
Alexander SheleminAlexander Shelemin
Alexander Shelemin
authored and
Alexander Shelemin
committed
locks and resource types analysis
1 parent 16a3592 commit 8b7f127

3 files changed

+63
-2
lines changed

locks_transactions_analysis.txt

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
--better/newer sp_lock
2+
select * from sys.dm_tran_locks
3+
4+
--locks per SPID; only recourse_type OBJECT is shown. Modify "where" clause to get what you want.
5+
SELECT request_session_id AS session_id,
6+
request_owner_id AS transaction_id,
7+
DB_NAME(resource_database_id) AS DatabaseName,
8+
OBJECT_SCHEMA_NAME(resource_associated_entity_id,
9+
resource_database_id) AS SchemaName,
10+
OBJECT_NAME(resource_associated_entity_id,
11+
resource_database_id) AS ObjectName,
12+
request_mode, request_type, request_status,
13+
COUNT_BIG(1) AS lock_count
14+
FROM sys.dm_tran_locks
15+
WHERE resource_type = 'OBJECT'
16+
GROUP BY request_session_id, request_owner_id,
17+
resource_database_id, resource_associated_entity_id,
18+
request_mode, request_type, request_status
19+
20+
21+
--transcations per session
22+
SELECT *
23+
FROM sys.dm_exec_sessions sessions
24+
JOIN sys.dm_tran_session_transactions trans
25+
ON sessions.session_id = trans.session_id
26+
27+
28+
-- find all suspended transactions (modify as needed)
29+
30+
SELECT session_id ,status ,blocking_session_id,
31+
wait_type ,wait_time ,wait_resource, transaction_id
32+
FROM sys.dm_exec_requests
33+
WHERE status = N'suspended';

plan_cache_analysis.txt

+6-2
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,16 @@ go
1515

1616
select * from sys.dm_os_memory_cache_counters order by pages_kb desc
1717

18-
-- plan_handle and sql_handle
18+
--sql_handle
1919

20-
SELECT st.text, qs. sql_handle, qs.plan_handle
20+
SELECT st.*, qs. sql_handle, qs.plan_handle
2121
FROM sys.dm_exec_query_stats qs
2222
CROSS APPLY sys.dm_exec_sql_text(sql_handle) st;
2323

24+
-- get sql test from plan_handle or sql_handle:
25+
26+
SELECT * from sys.dm_exec_sql_text(plan_handle|sql_handle)
27+
2428
-- shows most used adhoc plans; change (or omit) the objtype to get what you need
2529

2630
SELECT st.text, cp.plan_handle, cp.usecounts, cp.size_in_bytes,

resource_type_locks_deadlocks.txt

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
--deadlock or locking resource_type decyphering
2+
3+
select * from sys.dm_tran_locks
4+
5+
--resource type PAGE
6+
7+
DBCC traceon (3604) --to output dbcc page to SSMS console
8+
9+
select db_name(<dbid>)
10+
use <dbname>
11+
12+
13+
dbcc page(<dbid>, 1, 96859) -- example page info from sys.dm_tran_locks
14+
select object_name(<object_id>) -- object_id from Metadata: ObjectId field of dbcc page
15+
16+
-- resource type KEY or RID: get resource_associated_entity_id from sys.dm_tran_locks
17+
18+
SELECT
19+
o.name AS TableName,
20+
i.name AS IndexName,
21+
SCHEMA_NAME(o.schema_id) AS SchemaName
22+
FROM sys.partitions p JOIN sys.objects o ON p.OBJECT_ID = o.OBJECT_ID
23+
JOIN sys.indexes i ON p.OBJECT_ID = i.OBJECT_ID AND p.index_id = i.index_id
24+
WHERE p.hobt_id = <resource_associated_entity_id>

0 commit comments

Comments
 (0)