共用方式為


SQL Server Agent 固定資料庫角色

SQL Server 2005 導入下列 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 的權限,而 SQLAgentReaderRoleSQLAgentOperatorRole 兩者的成員自動就會擁有存取此 Proxy 的權限,即使沒有明確授與他們 proxy_A 的存取權限。如此可能會有安全性的隱含意義,將會在下列章節對於每個角色討論。

SQLAgentUserRole 權限

SQLAgentUserRole 是 SQL Server Agent 定資料庫角色中具備最少權限的角色。它只對操作員、本機作業和作業排程擁有權限。SQLAgentUserRole 的成員只對他們所擁有的本機作業和作業排程擁有權限。他們無法使用多伺服器作業 (主要和目標伺服器作業),也無法變更作業擁有權來取得他們尚未擁有之作業的存取權。SQLAgentUserRole 成員只能在 SQL Server Management Studio 的 [作業步驟屬性] 對話方塊中檢視可用 Proxy 的清單。SQLAgentUserRole 的成員在 SQL Server Management Studio [物件總管] 中只能看見 [作業] 節點。

安全性注意事項安全性注意事項

在授與「SQL Server代理程式資料庫角色 Proxy 存取權之前,需考慮安全性隱含意義。SQLAgentReaderRoleSQLAgentOperatorRole 自動為 SQLAgentUserRole 的成員。這表示 SQLAgentReaderRoleSQLAgentOperatorRole 的成員可以存取所有授與 SQLAgentUserRole 的 SQL Server Agent Proxy,也可以使用這些 Proxy。

下表摘要出 SQLAgentUserRole 對 SQL Server Agent 物件所擁有的權限。

動作

操作員

本機作業

(僅擁有的作業)

作業排程

(僅擁有的排程)

Proxy

建立/修改/刪除

是 1

檢視清單 (列舉)

是 2

是 3

啟用/停用

無法使用

檢視屬性

執行/停止/啟動

無法使用

無法使用

無法使用

檢視作業記錄

無法使用

無法使用

無法使用

刪除作業記錄

無法使用

否4

無法使用

無法使用

附加/卸離

無法使用

無法使用

無法使用

1 無法變更作業擁有權。

2 可以取得可用操作員的清單,以便在 sp_notify_operator 和 Management Studio 的 [作業屬性] 對話方塊中使用。

3 只在 Management Studio 的 [作業步驟屬性] 對話方塊中可用的 Proxy 清單。

4SQLAgentUserRole 的成員必須明確被授與對 sp_purge_jobhistory 的 EXECUTE 權限,才能對他們擁有的作業刪除作業記錄。他們無法刪除任何其他作業的作業記錄。

SQLAgentReaderRole 權限

SQLAgentReaderRole 包括所有 SQLAgentUserRole 的權限,並擁有檢視可用的多伺服器作業清單、其屬性與記錄的權限。此角色的成員也可以檢視所有可用作業的清單,和作業排程及其屬性,而非只有他們擁有的作業和作業排程。SQLAgentReaderRole 成員無法變更作業擁有權來取得他們尚未擁有之作業的存取權。SQLAgentReaderRole 的成員在 SQL Server Management Studio [物件總管] 中只能看見 [作業] 節點。

安全性注意事項安全性注意事項

在授與「SQL Server代理程式資料庫角色 Proxy 存取權之前,需考慮安全性隱含意義。SQLAgentReaderRole 的成員自動為 SQLAgentUserRole 的成員。這表示 SQLAgentReaderRole 的成員可以存取所有授與 SQLAgentUserRole 的 SQL Server Agent Proxy,也可以使用這些 Proxy。

下表摘要出 SQLAgentReaderRole 對 SQL Server Agent 物件所擁有的權限。

動作

操作員

本機作業

多伺服器作業

作業排程

Proxy

建立/修改/刪除

是 1 (僅擁有的作業)

是 (僅擁有的排程)

檢視清單 (列舉)

是 2

是 3

啟用/停用

是 (僅擁有的作業)

是 (僅擁有的排程)

無法使用

檢視屬性

編輯屬性

是 (僅擁有的作業)

是 (僅擁有的排程)

執行/停止/啟動

無法使用

是 (僅擁有的作業)

無法使用

無法使用

檢視作業記錄

無法使用

無法使用

無法使用

刪除作業記錄

無法使用

否4

無法使用

無法使用

附加/卸離

無法使用

無法使用

無法使用

是 (僅擁有的排程)

無法使用

1 無法變更作業擁有權。

2 可以取得可用操作員的清單,以便在 sp_notify_operator 和 Management Studio 的 [作業屬性] 對話方塊中使用。

3 只在 Management Studio 的 [作業步驟屬性] 對話方塊中可用的 Proxy 清單。

4SQLAgentReaderRole 的成員必須明確被授與對 sp_purge_jobhistory 的 EXECUTE 權限,才能對他們擁有的作業刪除作業記錄。他們無法刪除任何其他作業的作業記錄。

SQLAgentOperatorRole 權限

SQLAgentOperatorRole 是 SQL Server Agent 固定資料庫角色中具備最多權限的角色。它包括 SQLAgentUserRoleSQLAgentReaderRole 的所有權限。此角色的成員也可以檢視操作員和 Proxy 的屬性,並列舉出伺服器上可用的 Proxy 和警示。

SQLAgentOperatorRole 成員對本機作業和排程擁有額外的權限。他們可以執行、停止或啟動所有本機作業,也可以刪除伺服器上任何本機作業的作業記錄。還可以啟用或停用伺服器上所有本機作業和排程。若要啟用或停用本機作業或排程,此角色的成員必須使用預存程序 sp_update_jobsp_update_schedule。只有指定作業或排程名稱或識別碼的參數,以及 @enabled 參數可由 SQLAgentOperatorRole 的成員指定。如果他們指定任何其他參數,執行這些預存程序會失敗。SQLAgentOperatorRole 成員無法變更作業擁有權來取得他們尚未擁有之作業的存取權。

SQLAgentOperatorRole 的成員可以看見 SQL Server Management Studio [物件總管] 中的 [作業][警示][操作員][Proxy] 節點。只有 [錯誤記錄檔] 節點對此角色的成員是不可見的。

安全性注意事項安全性注意事項

在授與「SQL Server代理程式資料庫角色 Proxy 存取權之前,需考慮安全性隱含意義。SQLAgentOperatorRole 的成員自動為 SQLAgentUserRoleSQLAgentReaderRole 的成員。這表示 SQLAgentOperatorRole 的成員可以存取所有授與 SQLAgentUserRoleSQLAgentReaderRole 的 SQL Server Agent Proxy,也可以使用這些 Proxy。

下表摘要出 SQLAgentOperatorRole 對 SQL Server Agent 物件所擁有的權限。

動作

警示

操作員

本機作業

多伺服器作業

作業排程

Proxy

建立/修改/刪除

是 2 (僅擁有的作業)

是 (僅擁有的排程)

檢視清單 (列舉)

是 1

啟用/停用

是 3

是 4

無法使用

檢視屬性

編輯屬性

是 (僅擁有的作業)

是 (僅擁有的排程)

執行/停止/啟動

無法使用

無法使用

無法使用

無法使用

檢視作業記錄

無法使用

無法使用

無法使用

無法使用

刪除作業記錄

無法使用

無法使用

無法使用

無法使用

附加/卸離

無法使用

無法使用

無法使用

無法使用

是 (僅擁有的排程)

無法使用

1 可以取得可用操作員的清單,以便在 sp_notify_operator 和 Management Studio 的 [作業屬性] 對話方塊中使用。

2 無法變更作業擁有權。

3SQLAgentOperatorRole 成員可以使用預存程序 sp_update_job 並指定 @enabled@job_id (或 @job_name) 參數的值來啟用或停用不是由他們擁有的本機作業。如果此角色的成員為此預存程序指定任何其他參數,執行程序會失敗。

4SQLAgentOperatorRole 成員可以使用預存程序 sp_update_schedule 並指定 @enabled@schedule_id (或 @name) 參數的值來啟用或停用不是由他們擁有的排程。如果此角色的成員為此預存程序指定任何其他參數,執行程序會失敗。

指派多個角色給使用者

系統管理員 (sysadmin) 固定伺服器角色的成員,可存取所有 SQL Server Agent 的功能。如果使用者不是系統管理員 (sysadmin) 角色的成員,但是是多個 SQL Server Agent 固定資料庫角色的成員,請記住這些角色是同心權限模型。因為較多權限的角色永遠包含較少權限的角色的所有權限,因此使用者若為多個角色的成員,會自動擁有較多權限的角色成員所關聯的權限。