我正在处理一个需要为启动作业的用户引用“登录名”值的作业步骤。它将作为值传递到表字段中,然后由其他进程引用。
我无法找到系统表中是否存储起始用户名。它必须存储在某处,因为msdb.dbo.sysjobhistory
引用中的(作业结果)步骤是:
The job succeeded. The Job was invoked by User [domain]\[username]. The last step to run was...
我想为我的工作步骤捕获[domain]\[username]
值。我知道它可以作为后续工作完成,引用原始文件并进行一些字符串操作,但如果可能的话,我更愿意在同一个工作中完成。
提前致谢!
答案 0 :(得分:0)
这记录在message
表的msdb.dbo.sysjobhistory
列中。
您可能也希望对sysjobs表进行一些连接。即。
select
j.name as 'JobName',
run_date,
run_time,
msdb.dbo.agent_datetime(run_date, run_time) as 'RunDateTime',
case
when left(h.message,16) = 'Executed as user'
then substring(h.message,19,charindex('.',h.message,1) - 18)
when h.message like '%invoked by%'
then substring(h.message,charindex('invoked by ',h.message) + 11,charindex('.',substring(h.message,charindex('invoked by ',h.message) + 11,99)) - 1)
else h.message
end
From
msdb.dbo.sysjobs j
INNER JOIN
msdb.dbo.sysjobhistory h
ON j.job_id = h.job_id
where
j.enabled = 1 --Only Enabled Jobs
order by
JobName,
RunDateTime desc