查詢當前正在執行的語句
SELECT der.[session_id],der.[blocking_session_id], sp.lastwaittype,sp.hostname,sp.program_name,sp.loginame, der.[start_time] AS '開始時間', der.[status] AS '狀態', dest.[text] AS 'sql語句', DB_NAME(der.[database_id]) AS '數據庫名', der.[wait_type] AS '等待資源類型', der.[wait_time] AS '等待時間', der.[wait_resource] AS '等待的資源', der.[logical_reads] AS '邏輯讀次數' FROM sys.[dm_exec_requests] AS der INNER JOIN master.dbo.sysprocesses AS sp ON der.session_id=sp.spid CROSS APPLY sys.[dm_exec_sql_text](der.[sql_handle]) AS dest --WHERE [session_id]>50 AND session_id<>@@SPID ORDER BY der.[session_id] GO
是否堵塞
SELECT spid,blocked,waittime,waittype,waitresource,p.dbid,cpu,physical_io,memusage,open_tran ,status,login_time,last_batch,hostname,program_name,hostprocess,loginame,cmd,text FROM master.dbo.sysprocesses p CROSS APPLY sys.dm_exec_sql_text(p.sql_handle) s WHERE blocked > 0 OR spid IN(SELECT blocked FROM master.dbo.sysprocesses WHERE blocked > 0) go
檢查鎖表
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks t where resource_type='OBJECT' order by spid asc;
查詢導致死鎖的sql語句
dbcc inputbuffer(spid);
解鎖
declare @spid int Set @spid = 123--鎖表進程 declare @sql varchar(1000) set @sql='kill '+cast(@spid as varchar) exec(@sql)
殺掉進程
kill spid