SQL Server Agent 固定資料庫角色
SQL Server 具有下列 msdb 資料庫固定資料庫角色,讓管理員在存取 SQL Server Agent 時具有更細微的控制權。 以下列出這些角色 (存取權限由少至多排列):
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
當使用者不是上述這些連線到 SQL Server Management Studio 中 SQL Server 其中一個角色的成員,則會看不到物件總管中的 SQL Server Agent 節點。 使用者必須是這些固定資料庫角色的其中一個成員,或是 sysadmin 固定伺服器角色的成員,才能使用 SQL Server Agent。
SQL Server Agent 固定資料庫角色的權限
SQL Server Agent 資料庫角色權限是同心而互相關聯的 -- 較多權限的角色繼承較少權限的角色在 SQL Server Agent 物件上的權限 (包括警示、操作員、作業、排程和 Proxy)。 例如,如果擁有最少權限的 SQLAgentUserRole 成員,被授與存取 proxy_A 的權限,而 SQLAgentReaderRole 和 SQLAgentOperatorRole 兩者的成員自動就會擁有存取此 Proxy 的權限,即使沒有明確授與他們 proxy_A 的存取權限。 如此可能會有安全性的隱含意義,將會在下列章節對於每個角色討論。
SQLAgentUserRole 權限
SQLAgentUserRole 是 SQL Server Agent 定資料庫角色中具備最少權限的角色。 它只對操作員、本機作業和作業排程擁有權限。 SQLAgentUserRole 的成員只對他們所擁有的本機作業和作業排程擁有權限。 他們無法使用多伺服器作業 (主要和目標伺服器作業),也無法變更作業擁有權來取得他們尚未擁有之作業的存取權。 SQLAgentUserRole 成員只能在 SQL Server Management Studio 的 [作業步驟屬性] 對話方塊中檢視可用 Proxy 的清單。 SQLAgentUserRole 的成員在 SQL Server Management Studio 物件總管中只能看見 [作業] 節點。
重要
在授與 SQL ServerAgentdatabaseroles 成員的 Proxy 存取權之前,請考慮安全性影響。 SQLAgentReaderRole 和 SQLAgentOperatorRole 自動為 SQLAgentUserRole的成員。 這表示 SQLAgentReaderRole 和 SQLAgentOperatorRole 的成員可以存取所有授與 SQLAgentUserRole 的 SQL Server Agent Proxy,也可以使用這些 Proxy。
下表摘要出 SQLAgentUserRole 對 SQL Server Agent 物件所擁有的權限。
動作 | 操作員 | 本機作業 (僅擁有的作業) |
作業排程 (僅擁有的排程) |
Proxy |
---|---|---|---|---|
建立/修改/刪除 | No | 是 1 | 是 | 否 |
檢視清單 (列舉) | 是 2 | Yes | 是 | 是 3 |
啟用/停用 | 否 | .是 | 是 | 不適用 |
檢視屬性 | 否 | .是 | 是 | 否 |
執行/停止/啟動 | 不適用 | 是 | 不適用 | 不適用 |
檢視作業記錄 | 不適用 | 是 | 不適用 | 不適用 |
刪除作業記錄 | 不適用 | 否 4 | 不適用 | 不適用 |
附加/卸離 | 不適用 | 不適用 | 是 | 不適用 |
1 無法變更作業擁有權。
2 可以取得可用於 sp_notify_operator 的運算符清單,以及 Management Studio 的 [作業屬性] 對話方塊。
3 只有 Management Studio 的 [作業步驟屬性] 對話框才提供 Proxy 清單。
4 SQLAgentUserRole 的成員必須明確授與 EXECUTE 許可權,sp_purge_jobhistory,才能刪除自己擁有之作業的作業歷程記錄。 他們無法刪除任何其他作業的作業記錄。
SQLAgentReaderRole 權限
SQLAgentReaderRole 包括所有 SQLAgentUserRole 的權限,並擁有檢視可用的多伺服器作業清單、其屬性與記錄的權限。 此角色的成員也可以檢視所有可用作業的清單,和作業排程及其屬性,而非只有他們擁有的作業和作業排程。 SQLAgentReaderRole 成員無法變更作業擁有權來取得他們尚未擁有之作業的存取權。 SQLAgentReaderRole 的成員在 SQL Server Management Studio 物件總管中只能看見 [作業] 節點。
重要
在授與 SQL ServerAgentdatabaseroles 成員的 Proxy 存取權之前,請考慮安全性影響。 SQLAgentReaderRole 的成員自動為 SQLAgentUserRole的成員。 這表示 SQLAgentReaderRole 的成員可以存取所有授與 SQLAgentUserRole 的 SQL Server Agent Proxy,也可以使用這些 Proxy。
下表摘要出 SQLAgentReaderRole 對 SQL Server Agent 物件所擁有的權限。
動作 | 操作員 | 本機作業 | 多伺服器作業 | 作業排程 | Proxy |
---|---|---|---|---|---|
建立/修改/刪除 | No | 是 1 (僅限擁有的工作) | No | 是 (僅擁有的排程) | 否 |
檢視清單 (列舉) | 是 2 | Yes | .是 | 是 | 是 3 |
啟用/停用 | 否 | 是 (僅擁有的作業) | 否 | 是 (僅擁有的排程) | 不適用 |
檢視屬性 | 否 | .是 | .是 | 是 | 否 |
編輯屬性 | 否 | 是 (僅擁有的作業) | 否 | 是 (僅擁有的排程) | 否 |
執行/停止/啟動 | 不適用 | 是 (僅擁有的作業) | 否 | 不適用 | 不適用 |
檢視作業記錄 | 不適用 | 是 | 是 | 不適用 | 不適用 |
刪除作業記錄 | 不適用 | 否 4 | No | 不適用 | 不適用 |
附加/卸離 | 不適用 | 不適用 | 不適用 | 是 (僅擁有的排程) | 不適用 |
1 無法變更作業擁有權。
2 可以取得可用於 sp_notify_operator 的運算符清單,以及 Management Studio 的 [作業屬性] 對話方塊。
3 只有 Management Studio 的 [作業步驟屬性] 對話框才提供 Proxy 清單。
4 SQLAgentReaderRole 的成員必須明確授與 EXECUTE 許可權,sp_purge_jobhistory才能刪除自己擁有之作業的作業歷程記錄。 他們無法刪除任何其他作業的作業記錄。
SQLAgentOperatorRole 權限
SQLAgentOperatorRole 是 SQL Server Agent 固定資料庫角色中具備最多權限的角色。 它包括 SQLAgentUserRole 和 SQLAgentReaderRole的所有權限。 此角色的成員也可以檢視操作員和 Proxy 的屬性,並列舉出伺服器上可用的 Proxy 和警示。
SQLAgentOperatorRole 成員對本機作業和排程擁有額外的權限。 他們可以執行、停止或啟動所有本機作業,也可以刪除伺服器上任何本機作業的作業記錄。 還可以啟用或停用伺服器上所有本機作業和排程。 若要啟用或停用本機作業或排程,此角色的成員必須使用預存程序 sp_update_job 和 sp_update_schedule。 只有指定作業或排程名稱或識別碼的參數,以及 @enabled 參數可由 SQLAgentOperatorRole的成員指定。 如果他們指定任何其他參數,執行這些預存程序會失敗。 SQLAgentOperatorRole 成員無法變更作業擁有權來取得他們尚未擁有之作業的存取權。
SQLAgentOperatorRole 的成員可以看見 SQL Server Management Studio 物件總管中的 [作業]、[警示]、[操作員] 和 [Proxy] 節點。 只有 [錯誤記錄檔] 節點對此角色的成員是不可見的。
重要
在授與 SQL ServerAgentdatabaseroles 成員的 Proxy 存取權之前,請考慮安全性影響。 SQLAgentOperatorRole 的成員自動為 SQLAgentUserRole 和 SQLAgentReaderRole的成員。 這表示 SQLAgentOperatorRole 的成員可以存取所有獲授與 SQLAgentUserRole 或 SQLAgentReaderRole 的 SQL Server Agent Proxy,也可以使用這些 Proxy。
下表摘要出 SQLAgentOperatorRole 對 SQL Server Agent 物件所擁有的權限。
動作 | 警示 | 操作員 | 本機作業 | 多伺服器作業 | 作業排程 | Proxy |
---|---|---|---|---|---|---|
建立/修改/刪除 | 否 | No | 是 2 (僅限擁有的工作) | No | 是 (僅擁有的排程) | 否 |
檢視清單 (列舉) | 是 | 是 1 | 是 | .是 | .是 | 是 |
啟用/停用 | 否 | No | 是 3 | No | 是 4 | 不適用 |
檢視屬性 | 是 | .是 | .是 | .是 | .是 | 是 |
編輯屬性 | 否 | 否 | 是 (僅擁有的作業) | 否 | 是 (僅擁有的排程) | 否 |
執行/停止/啟動 | 不適用 | 不適用 | 是 | 否 | 不適用 | 不適用 |
檢視作業記錄 | 不適用 | 不適用 | 是 | 是 | 不適用 | 不適用 |
刪除作業記錄 | 不適用 | 不適用 | 是 | 否 | 不適用 | 不適用 |
附加/卸離 | 不適用 | 不適用 | 不適用 | 不適用 | 是 (僅擁有的排程) | 不適用 |
1 可以取得可用於 sp_notify_operator 的運算符清單,以及 Management Studio 的 [作業屬性] 對話方塊。
2 無法變更作業擁有權。
3 SQLAgentOperatorRole 成員可以使用預存程式sp_update_job,並指定@enabled和@job_id (或 @job_name) 參數的值,來啟用或停用它們不擁有的本機作業。 如果此角色的成員為此預存程序指定任何其他參數,執行程序會失敗。
4 SQLAgentOperatorRole 成員可以使用預存程式sp_update_schedule並指定@enabled和@schedule_id (或 @name) 參數的值,來啟用或停用它們不擁有的排程。 如果此角色的成員為此預存程序指定任何其他參數,執行程序會失敗。
指派多個角色給使用者
sysadmin 固定伺服器角色的成員,可存取所有 SQL Server Agent 的功能。 如果使用者不是 sysadmin 角色的成員,但是是多個 SQL Server Agent 固定資料庫角色的成員,請記住這些角色是同心權限模型。 因為較多權限的角色永遠包含較少權限的角色的所有權限,因此使用者若為多個角色的成員,會自動擁有較多權限的角色成員所關聯的權限。
另請參閱
實作 SQL Server Agent 安全性
sp_update_job (Transact-SQL)
sp_update_schedule (Transact-SQL)
sp_notify_operator (Transact-SQL)
sp_purge_jobhistory (Transact-SQL)