sp_who2中查到了SQLAgent的JobStep信息,如何查找具体内容?

Ki1381 2017-01-05 09:13:53
sp_who2 中查到了一个阻塞的源头,ProgramName显示为:
SQLAgent - TSQLJobStep (Job 0xXXXXXXXXX : Step 3)

猜测这个0x开头的代码应该是个什么ID,但是查询msdb的sysjobs和sysjobsteps里面好像都找不到它。
请问有什么办法查到它对应哪个具体的job吗?谢谢。
...全文
246 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
道素 2017-01-05
  • 打赏
  • 举报
回复

DECLARE @job varchar(100), @jobID varchar(100)
select @job = 'SQLAgent - TSQL JobStep (Job 0xB2525BC0DBA1E844B582EFB55131EACF : Step 1)'
set @job = replace(@job, '(Job 0x', '(0x') 
set @jobID = replace(@job, 'SQLAgent - TSQL JobStep (', '') 
if (select charindex(' ', @jobID, 1)) > 0 
begin 
    set @jobID = substring(@jobID, 1, charindex(' ', @jobID, 1)-1) 
end 
select replace(@job, @jobID, 
                           (
                               select distinct name
                               from msdb.dbo.sysjobs
                               where master.dbo.fn_varbintohexstr(job_id) = @jobID
                           )
               )
道素 2017-01-05
  • 打赏
  • 举报
回复
从下面两个中找

    SELECT * FROM msdb.dbo.sysjobs
    SELECT * FROM msdb.dbo.sysjobsteps
Ki1381 2017-01-05
  • 打赏
  • 举报
回复
引用 2 楼 shoppo0505 的回复:
[quote=引用 楼主 ki1381 的回复:] sp_who2 中查到了一个阻塞的源头,ProgramName显示为: SQLAgent - TSQLJobStep (Job 0xXXXXXXXXX : Step 3) 猜测这个0x开头的代码应该是个什么ID,但是查询msdb的sysjobs和sysjobsteps里面好像都找不到它。 请问有什么办法查到它对应哪个具体的job吗?谢谢。
直接到SQL Agent里面去找吧。[/quote] 没方向啊。。。
Ki1381 2017-01-05
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
-- 看看跑的是什么语句
dbcc inputbuffer(spid)
当时看到的时候应该是句系统语句,createjobschedule(忘记精确的名称了)什么什么的,肯定不是具体执行业务的语句。
shoppo0505 2017-01-05
  • 打赏
  • 举报
回复
引用 楼主 ki1381 的回复:
sp_who2 中查到了一个阻塞的源头,ProgramName显示为: SQLAgent - TSQLJobStep (Job 0xXXXXXXXXX : Step 3) 猜测这个0x开头的代码应该是个什么ID,但是查询msdb的sysjobs和sysjobsteps里面好像都找不到它。 请问有什么办法查到它对应哪个具体的job吗?谢谢。
直接到SQL Agent里面去找吧。
卖水果的net 2017-01-05
  • 打赏
  • 举报
回复
-- 看看跑的是什么语句
dbcc inputbuffer(spid)
Ki1381 2017-01-05
  • 打赏
  • 举报
回复
引用 6 楼 ch21st 的回复:

DECLARE @job varchar(100), @jobID varchar(100)
select @job = 'SQLAgent - TSQL JobStep (Job 0xB2525BC0DBA1E844B582EFB55131EACF : Step 1)'
set @job = replace(@job, '(Job 0x', '(0x') 
set @jobID = replace(@job, 'SQLAgent - TSQL JobStep (', '') 
if (select charindex(' ', @jobID, 1)) > 0 
begin 
    set @jobID = substring(@jobID, 1, charindex(' ', @jobID, 1)-1) 
end 
select replace(@job, @jobID, 
                           (
                               select distinct name
                               from msdb.dbo.sysjobs
                               where master.dbo.fn_varbintohexstr(job_id) = @jobID
                           )
               )
解决!牛,谢谢!

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧