如何授予用户访问SQL作业的权限?
用户无权访问SQL代理,SQL作业以运行作业。
答案 0 :(得分:1)
我会说Configure a User to Create and Manage SQL Server Agent Jobs中记录的是“好”,但是,“好”似乎很多;也许“感动”是一个更好的短语。但是,在您掌握了基本知识的情况下,它确实msdb
中有一些数据库角色可用于授予用户/登录权限。
如果您的登录名中没有msdb
中的用户,则需要创建一个用户:
CREATE USER [YourLogin} FOR LOGIN {YourLogin};
然后,您需要为他们提供正确的固定角色;这些SQLAgentOperatorRole,SQLAgentReaderRole和SQLAgentUserRole中有3个。这些在SQL Server Agent Fixed Database Roles中有更好的介绍。然后,您只需要使用相关的ALTER
命令即可。例如:
ALTER ROLE SQLAgentReaderRole ADD MEMBER {YourLogin};
引用每个角色的相关权限:
SQL代理用户角色:
SQLAgentUserRole是已修复的SQL Server代理的最低特权 数据库角色。它仅对操作员,本地作业和 工作时间表。 SQLAgentUserRole的成员仅具有权限 当地工作和他们拥有的工作时间表。他们不能使用 多服务器作业(主服务器和目标服务器作业),它们不能 更改工作所有权以访问尚未存在的工作 拥有。 SQLAgentUserRole成员可以查看可用代理的列表 仅在SQL Server管理的“作业步骤属性”对话框中 工作室。 SQL Server Management Studio对象中只有Jobs节点 SQLAgentUserRole的成员可以看到资源管理器。
SQL代理读取器角色:
SQLAgentReaderRole将所有SQLAgentUserRole权限包括为 以及查看可用的多服务器作业列表的权限, 他们的财产和历史。此角色的成员还可以 查看所有可用工作和工作时间表及其列表 属性,而不仅仅是他们拥有的那些工作和工作时间表。 SQLAgentReaderRole成员不能更改作业所有权以获取访问权限 他们尚未拥有的工作。 SQL Server中只有Jobs节点 Management Studio对象资源管理器对 SQLAgentReaderRole。
SQL代理操作员角色:
SQLAgentOperatorRole是SQL Server代理中最特权的 固定的数据库角色。它包含以下所有权限 SQLAgentUserRole和SQLAgentReaderRole。此角色的成员还可以 查看操作员和代理的属性,并枚举可用 服务器上的代理和警报。
SQLAgentOperatorRole成员对本地作业具有其他权限 和时间表。他们可以执行,停止或启动所有本地作业,并且 他们可以删除服务器上任何本地作业的作业历史记录。他们 还可以在服务器上启用或禁用所有本地作业和计划。 要启用或禁用本地作业或计划,此角色的成员 必须使用存储过程sp_update_job和sp_update_schedule。 仅用于指定作业或计划名称的参数或 标识符和 @enabled 参数可以由成员指定 SQLAgentOperatorRole的名称。如果他们指定其他任何参数, 这些存储过程的执行失败。 SQLAgentOperatorRole 成员不能更改工作所有权以获取他们所访问的工作 还没有拥有。
SQL Server中的作业,警报,操作员和代理节点 Management Studio对象资源管理器对以下成员可见 SQLAgentOperatorRole。只有“错误日志”节点不可见 该角色的成员。
取决于用户需要执行的操作取决于用户需要的角色。您也可以根据需要为用户分配多个角色。这些角色都没有明确的DENY
权限,因此不会阻止他们执行特定任务;他们只会让他们去做。
答案 1 :(得分:0)
授予用户msdb中SQL代理角色的权限,具体取决于您的要求。例如:SQLAgentOperatorRole
USE msdb
ALTER ROLE SQLAgentOperatorRole ADD MEMBER [yourUser]
Larnu在本主题中已经描述了可以使用的可能角色