設定非系統管理員可建立及管理 SQL Server Agent 作業

設定非系統管理員可建立及管理 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 作業