標籤:
--根據作業名 尋找session id
select a.spid,a.blocked,b.name,substring(replace(a.PROGRAM_NAME,‘SQLAgent - TSQL JobStep (Job ‘,‘‘),1,34) JobStep ,a.last_batch
from master.dbo.sysprocesses a inner join msdb.dbo.sysjobs b
on master.dbo.fn_varbintohexstr(CONVERT(varbinary(16), job_id)) = substring(replace(PROGRAM_NAME,‘SQLAgent - TSQL JobStep (Job ‘,‘‘),1,34)
--根據session id 執行計畫
select a1.session_id,b1.text,a1.query_plan,a1.cpu_time,a1.logical_reads,a1.sql_handle,a1.plan_handle from
(
select * from sys.dm_exec_requests a cross apply sys.dm_exec_query_plan (a.plan_handle) b
where a.session_id<>@@spid
)a1 cross apply sys.dm_exec_sql_text (a1.sql_handle)b1
order by a1.cpu_time desc
--查看執行計畫
set statistics io on
set statistics time on
set statistics profile on
--單條語句執行很快,但session長時間未結束
確定語句是否迴圈執行(查看sp內容),多次執行同一條語句,
導致表面上是簡單sql造成的,但是重複執行相同語句,以為是一條語句運行慢導致session執行很長時間 ,其實是n×單次時間
SQL Server session故障排查