设定非系统管理员可建立及管理 SQL Server Agent 作业
问题描述
某日委外厂商发信给User,提到应用程序要以程序方式建立SQL Server Agent作业发生错误是因为权限不足,因此要User联络IT人员把AP所使用的SQL Server登入(Login)设定为sysadmin。
熟悉SQL Server的朋友都知道sysadmin这个服务器角色的权限可以做什么,如果依照厂商所说得直接将登入加入sysadmin服务器角色当然立刻可以解决问题,但应用程序只需要建立/删除SQL Server Agent作业,基于权限最小化原则,只授权登入所需的权限就好,会不会更为恰当?
因此若要让非系统管理员或DBA可以自行建立及管理的SQL Server Agent作业,可以参考本文的介绍。
建立使用者对应及设定成员资格
请开启SQL Server Management Studio,在对象总管中找到应用程序所使用的登入,于登入属性窗口点选【使用者对应>勾选msdb】。
于下方数据库角色成员资格对象勾选【SQLAgentUserRole、SQLAgentReaderRole 或 SQLAgentOperatorRole】,接着按确定关闭窗口。
另外,依照应用程序的需求,视情况授权登入拥有查询sysjobs系统数据表的权限,以查询SQL Server Agent作业的排程,可以下列的T-SQL命令码来完成:
go
grant select on dbo.sysjobs to [登入名称]
go
参考数据
设定使用者可建立及管理 SQL Server Agent作业
设定使用者可建立及管理 SQL Server Agent 作业
原文:大专栏 设定非系统管理员可建立及管理 SQL Server Agent 作业