代码之家  ›  专栏  ›  技术社区  ›  Philip

从sp\u whoisactive results中的“program\u Name”获取作业名称

  •  0
  • Philip  · 技术社区  · 7 年前

    sp_whoisactive 以帮助确定我需要进一步研究的问题。

    我注意到我的大多数高利用率查询都来自SQLAgent作业,并且在 Program_Name “专栏,它只给我” SQLAgent - TSQL Job Step (Job 0xFA25C66E3D1.... : Step 7)

    我怎么能回到实际的工作名称铭记我不能运行 sp_who 或类似于检查,因为这是以前的执行。

    0 回复  |  直到 7 年前
        1
  •  1
  •   Juicy Meats    7 年前

    下面将提供按阻塞受害者排序的查询,以及请求的JobName。

        SELECT  er.session_id as [Spid]
         ,er.percent_complete
        ,DB_NAME(er.database_id) as [Database]
        ,CASE WHEN er.blocking_session_id=er.session_id THEN 0 ELSE er.blocking_session_id END Blocker
        ,Mem.used_memory_kb
        ,er.wait_time
        ,Mem.granted_memory_kb
        ,ES.nt_user_name
        ,er.status as [Status]
        ,er.wait_type as [Wait]        
        ,ES.program_name
        ,J.Name as JobName
        ,ES.host_name
        ,ES.nt_domain
        ,er.start_time
        ,CONVERT(varchar(12), DATEADD(ms, DATEDIFF(ms, er.start_time, GETDATE()), 0), 108) TotalTime
        ,cast(qp.query_plan as XML) plans
        ,SUBSTRING(qt.text, er.statement_start_offset / 2,2000) [running Query]
        ,qt.text  [Parent Query]
        FROM    sys.dm_exec_requests er
        inner JOIN sys.dm_exec_sessions ES ON er.session_id = ES.session_id
        outer APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
        outer apply sys.dm_exec_query_plan(er.plan_handle) qp
        LEFT JOIN sys.dm_exec_query_memory_grants Mem ON er.session_id = Mem.session_id
        Left join msdb.dbo.sysjobs J on es.program_name  like '%'+cast(right(j.job_id,12)as varchar(12)) +'%'
        WHERE   ES.program_name <>'Microsoft® Windows® Operating System'        
        ORDER BY
        4  DESC ,
        1  asc