1、新建账户SQLAgentRead, 授予msdb库的SQLAgentReaderRole和“dbdatareader”角色

授予账户msdb 库SQLAgentReaderRole角色


agent_datetime 是 msdb 内置系统存储过程函数,SQLAgentReaderRole 角色默认没有授予该函数的执行权限,只给了读取作业历史表的查询权限,需要单独授予执行权限(推荐,最小权限)

agent_datetime 是 msdb 内置系统存储过程函数,SQLAgentReaderRole 角色默认没有授予该函数的执行权限,只给了读取作业历史表的查询权限,需要单独授予执行权限(推荐,最小权限)
USE msdb;
GO
GRANT EXECUTE ON dbo.agent_datetime TO [SQLAgentRead];
GO

 

查询

SELECT
    j.name AS JobName,
    CONVERT(VARCHAR(19), msdb.dbo.agent_datetime(h.run_date, h.run_time), 120) AS RunTime,
    h.run_status AS RunStatus,
    ISNULL(h.message, '') AS MessageText,h.run_date, h.run_time
FROM msdb.dbo.sysjobhistory h WITH (NOLOCK)
INNER JOIN msdb.dbo.sysjobs j WITH (NOLOCK) ON j.job_id = h.job_id
WHERE h.step_id = 0
  AND h.run_status = 1
  AND msdb.dbo.agent_datetime(h.run_date, h.run_time) >= DATEADD(HOUR, -12, GETDATE())
ORDER BY h.run_date DESC, h.run_time DESC

image

 

posted on 2026-06-16 12:00  小油2018  阅读(3)  评论(0)    收藏  举报