sp_locksql
查看鎖表名稱session
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type='OBJECT'
spid 鎖表進程
tableName 被鎖表名
解鎖:
kill spidspa
DBCC INPUTBUFFER(spid) --查看改進程的sql 語句code
blocked爲0的是引發死鎖的,blocked不爲0的是被等待的進程,等待釋放資源的才繼續執行。等待資源。waitResourceblog
SELECT spid, blocked, DB_NAME(sp.dbid) AS DBName, program_name, waitresource, lastwaittype, sp.loginame, sp.hostname, a.[Text] AS [TextData], SUBSTRING ( A. TEXT, sp.stmt_start / 2, ( CASE WHEN sp.stmt_end = - 1 THEN DATALENGTH (A. TEXT) ELSE sp.stmt_end END - sp.stmt_start ) / 2 ) AS [current_cmd] FROM sys.sysprocesses AS sp OUTER APPLY sys.dm_exec_sql_text (sp.sql_handle) AS A WHERE spid > 50 and spid in( select request_session_id spid from sys.dm_tran_locks where resource_type='OBJECT') ORDER BY blocked DESC, DB_NAME(sp.dbid) ASC, a.[text]
--查看鎖搶奪資源
sp_lock
例如A進程(鎖住資源未提交未完成)進程
begin tran
update c_FeeType set DM=dm
ci
B進程(等待)資源
select * from c_FeeTypecmd