1. 程式人生 > 其它 >SQL鎖表及CPU使用高查詢

SQL鎖表及CPU使用高查詢

use HR
GO
select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName   
from   sys.dm_tran_locks where resource_type='OBJECT'

----
----

declare @spid int,@bl int
DECLARE s_cur CURSOR FOR   select  0 ,blocked   from (select * from sys.sysprocesses where  blocked>0 ) a
where not exists(select * from (select * from sys.sysprocesses where  blocked>0 ) b   where a.blocked=spid)
union
select spid,blocked from sys.sysprocesses where  blocked>0   OPEN s_cur   FETCH NEXT FROM s_cur INTO @spid,@bl   WHILE @@FETCH_STATUS = 0
begin   if @spid =0
select ' 引起資料庫死鎖的是: '+ CAST(@bl AS VARCHAR(10)) + ' 程序號, 其執行的SQL 語法如下'   else
select ' 程序號SPID :'+ CAST(@spid AS VARCHAR(10))+ ' 被' + ' 程序號SPID :'+ CAST(@bl AS VARCHAR(10)) +' 阻塞, 其當前程序執行的SQL 語法如下'
DBCC INPUTBUFFER (@bl )   FETCH NEXT FROM s_cur INTO @spid,@bl   end   CLOSE s_cur
DEALLOCATE s_cur

----
----

use master
go
--檢索死鎖程序
select spid, blocked, loginame, last_batch, status, cmd, hostname, program_name
from sysprocesses
where spid in
( select blocked from sysprocesses where blocked <> 0 ) or (blocked <>0)

-----
-----
-----

use master
go
select spid, blocked, loginame, last_batch, status, cmd, hostname, program_name
from sysprocesses
where spid in
( select blocked from sysprocesses where blocked <> 0 ) or (blocked <>0)


kill 134


-- 查CPU使用情況
SELECT TOP 10 (a.total_worker_time / a.execution_count) AS  "平均每次cpu消耗"
,Convert(VARCHAR, Last_Execution_Time) AS  "最後執行時間"
,Total_Physical_Reads AS "物理讀"
,execution_count AS "執行次數"
,SUBSTRING(b.TEXT, a.statement_start_offset / 2, (
CASE
WHEN a.statement_end_offset = - 1
THEN len(convert(NVARCHAR(max), b.TEXT)) * 2
ELSE a.statement_end_offset
END - a.statement_start_offset
) / 2) AS [Query_Text]
FROM sys.dm_exec_query_stats a
CROSS APPLY sys.dm_exec_SQL_text(a.SQL_handle) AS b
ORDER BY 1 DESC

  

你的一分支援,是我堅持創作的十分動力。 如果文章的內容對你有幫助的話,請用微信掃描下方二維碼,支援一下。謝謝!