https://msdn.microsoft.com/zh-cn/library/ms188283.aspx
1.我们创建非sysadmin用户后,登录ssms时无法查看SQL Server Agent的JOB情况。
2.在MSDB数据库中创建对应的用户,然后授予查看的权限。
- SQLAgentUserRole 的成员只对它们所拥有的本地作业和作业计划拥有权
限。 它们不能使用多服务器作业(主服务器作业和目标服务器作业),也不能
通过更改作业所有权来获得对它们还没有拥有的作业的访问权限。
- SQLAgentReaderRole 包括所有的 SQLAgentUserRole 权限,以及查看可用的
多服务器作业及其属性和历史记录的列表的权限。 此角色的成员还可以查看所
有可用作业和作业计划以及它们的属性的列表,而不只是它们所拥有的那些作
业和作业计划。SQLAgentReaderRole 成员不能通过更改作业所有权来获得对
它们还没有拥有的作业的访问权限。
- SQLAgentOperatorRole 是具有最高特权的 SQL Server 代理固定数据库角
色。 它的权限包括 SQLAgentUserRole 和 SQLAgentReaderRole的所有权
限。 此角色的成员还可以查看运算符和代理的属性,并且可以枚举服务器上的
可用代理和警报。
- SQLAgentOperatorRole 的成员还拥有对本地作业和计划的其他权限。 它们可
以执行、停止或启动所有本地作业,还可以删除服务器上的任何本地作业的作
业历史记录。 它们还可以启用或禁用服务器上的所有本地作业和计划。
USE [msdb]
GO
CREATE USER bingo FOR LOGIN bingo
GO
USE [msdb]
GO
EXEC sp_addrolemember N'SQLAgentOperatorRole', N'bingo'
GO
USE [msdb]
GO
EXEC sp_addrolemember N'SQLAgentReaderRole', N'bingo'
GO
USE [msdb]
GO
EXEC sp_addrolemember N'SQLAgentUserRole', N'bingo'
注意:
如果在服务器上有执行了DENY VIEW ANY DATABASE TO PUBLIC的语句,就算配置了上面的权限,还是一样的看不到代理作业。