是否需要 SQLAgentUserRole 来查看 msdb.dbo 表?

是否需要 SQLAgentUserRole 来查看 msdb.dbo 表?

作为 ETL 验证的一部分,我经常通过查询团队环境中的 msdb.dbo 表来检查作业状态以获取有关计划、运行状态、运行时间等的信息。我很好奇是否可以向非隔离环境中的开发人员使用的通用登录授予权限,例如 Merge 或 QA,其中多个团队正在访问,直至但不包括 Prod,以允许查看 msdb.dbo 表?

目前,上述通用开发登录没有足够的权限,必须依靠 DBA 按要求报告此信息,从而浪费他们的时间和精力。我不认为这与授予 SQLAgentUserRole 相同,但可能是错误的。这个请求是否超出范围/冒犯了 DBA?

我的查询供参考:(通过 S​​oapUI 使用 JDBC 需要更高的详细程度) SELECT [sysjobs].[name] AS [job_name], [sysjobhistory].[run_date] AS [run_date], [sysjobhistory].[run_time] AS [run_time], [sysjobhistory].[run_status] AS [run_status] FROM [msdb].[dbo].[sysjobs] INNER JOIN [msdb].[dbo].[sysjobhistory] ON [sysjobs].[job_id] = [sysjobhistory].[job_id] WHERE [sysjobs].[enabled] = 1 -- only enabled jobs ORDER BY [run_date], [run_time] DESC

感谢您的时间。

答案1

SQLAgentUserRole 拥有的权限远不止读取查询中的两个表,您可以在角色属性中的安全选项卡上查看这些权限。如果您只想访问查询中的两个 msdb 表,那么您可以创建另一个仅具有这些权限的数据库角色,然后将您的 SQL/AD 凭据添加到 msdb 中具有该角色的实例。

相关内容