適用於:SQL Server
Azure SQL 受控執行個體
這很重要
在 Azure SQL 受控實例上,目前支援大部分但並非所有 SQL Server Agent 功能。 如需詳細資訊,請參閱 與 SQL Server 的 Azure SQL 受控實例 T-SQL 差異。
SQL Server 具有下列 msdb
資料庫固定資料庫角色,可讓系統管理員更精細地控制 SQL Server Agent 的存取權。 從最低許可權到最特殊許可權存取所列出的角色包括:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
當不屬於其中一個角色的用戶連線到 SQL Server Management Studio 中的 SQL Server 時,對象總管中的 SQL Server Agent 節點不會顯示。 用戶必須是下列其中一個固定資料庫角色的成員,或是 系統管理員 固定伺服器角色的成員,才能使用 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 物件總管中的 Jobs 節點。
這很重要
SQLAgentReaderRole 和 SQLAgentOperatorRole 會自動成為 SQLAgentUserRole 的成員。 這表示 SQLAgentReaderRole 和 SQLAgentOperatorRole 的成員可以存取已授與 SQLAgentUserRole 的所有 SQL Server Agent Proxy,而且可以使用這些 Proxy。
下表摘要說明 SQL Server Agent 物件上的 SQLAgentUserRole 許可權。
行動 | 運營商 | 本地工作(僅限自有工作) | 作業排程(僅限擁有的排程 ) | Proxy |
---|---|---|---|---|
建立/修改/刪除 | 否 | 是的 無法變更工作擁有權。 |
是的 | 否 |
檢視清單 (列舉) | 是的 可以取得可用於 sp_notify_operator Management Studio 之 [ 作業屬性 ] 對話框的可用運算符清單。 |
是的 | 是的 | 是的 只能在 Management Studio 的 [作業步驟屬性 ] 對話方塊中取得 Proxy 清單。 |
啟用/停用 | 否 | 是的 | 是的 | 不適用 |
檢視屬性 | 否 | 是的 | 是的 | 否 |
執行/停止/啟動 | 不適用 | 是的 | 不適用 | 不適用 |
檢視作業記錄 | 不適用 | 是的 | 不適用 | 不適用 |
刪除作業歷程記錄 | 不適用 | 否 SQLAgentUserRole 的成員必須明確獲得 EXECUTE 許可權sp_purge_jobhistory ,才能刪除自己擁有之作業的作業歷程記錄。 他們無法刪除任何其他作業的作業歷程記錄。 |
不適用 | 不適用 |
附加/卸離 | 不適用 | 不適用 | 是的 | 不適用 |
SQLAgentReaderRole 許可權
SQLAgentReaderRole 包含所有 SQLAgentUserRole 許可權,以及檢視可用多伺服器作業清單、其屬性和歷程記錄的許可權。 此角色的成員也可以檢視所有可用作業和作業排程的清單及其屬性,而不只是這些作業和他們所擁有的作業排程。 SQLAgentReaderRole 成員無法變更作業擁有權,以取得他們尚未擁有之作業的存取權。 只有 SQLAgentReaderRole 成員能在 SQL Server Management Studio 物件總管中看到 Jobs 節點。
這很重要
SQLAgentReaderRole 的成員會自動是 SQLAgentUserRole 的成員。 這表示 SQLAgentReaderRole 的成員可以存取所有已授與 SQLAgentUserRole 的 SQL Server Agent Proxy,並且能使用這些代理。
下表摘要說明 SQL Server Agent 物件上的 SQLAgentReaderRole 許可權。
行動 | 運營商 | 在地工作机会 | 多伺服器作業 | 作業排程 | Proxy |
---|---|---|---|---|---|
建立/修改/刪除 | 否 | 是(僅限自行擁有的工作) 無法變更工作擁有權。 |
否 | 是(僅限自己擁有的排程) | 否 |
查看列表(列舉) | 是的 可以取得可用於 sp_notify_operator Management Studio 之 [ 作業屬性 ] 對話框的可用運算符清單。 |
是的 | 是的 | 是的 | 是的 只能在 Management Studio 的 [作業步驟屬性 ] 對話方塊中取得 Proxy 清單。 |
啟用/停用 | 否 | 是(僅限擁有的工作) | 否 | 是(僅限擁有的排程) | 不適用 |
檢視屬性 | 否 | 是的 | 是的 | 是的 | 否 |
編輯屬性 | 否 | 是(僅限於自己擁有的工作) | 否 | 是(限於自有的排程) | 否 |
執行/停止/啟動 | 不適用 | 是(僅限自己擁有的工作) | 否 | 不適用 | 不適用 |
檢視作業記錄 | 不適用 | 是的 | 是的 | 不適用 | 不適用 |
刪除作業歷程記錄 | 不適用 | 否 SQLAgentReaderRole 的成員必須被明確授予對 EXECUTE sp_purge_jobhistory 的許可權,才能刪除他們自己擁有之作業的作業歷程記錄。 他們無法刪除任何其他作業的作業歷程記錄。 |
否 | 不適用 | 不適用 |
連接/分離 | 不適用 | 不適用 | 不適用 | 是(限本人擁有的排程) | 不適用 |
SQLAgentOperatorRole 權限
SQLAgentOperatorRole 是最具特殊許可權的 SQL Server Agent 固定資料庫角色。 其中包含 SQLAgentUserRole 和 SQLAgentReaderRole 的所有許可權。 此角色的成員也可以檢視運算符和 Proxy 的屬性,並列舉伺服器上的可用 Proxy 和警示。
SQLAgentOperatorRole 成員具有本機作業和排程的額外許可權。 他們可以執行、停止或啟動所有本機作業,而且可以刪除伺服器上任何本機作業的作業歷程記錄。 它們也可以啟用或停用伺服器上的所有本機作業和排程。 若要啟用或停用本機作業或排程,此角色的成員必須使用預存程序 sp_update_job
和 sp_update_schedule
。 只有指定作業或排程名稱或標識符的參數,而且 @enabled
參數可由 SQLAgentOperatorRole 的成員指定。 如果它們指定任何其他參數,則執行這些預存程式會失敗。
SQLAgentOperatorRole 成員無法變更作業擁有權,以取得他們尚未擁有之作業的存取權。
SQL Server Management Studio 物件總管中的 作業、 警示、 運算符和 Proxy 節點可看見 SQLAgentOperatorRole 的成員。 只有錯誤記錄檔節點對這個角色的成員不可見。
這很重要
SQLAgentOperatorRole 的成員會自動是 SQLAgentUserRole 和 SQLAgentReaderRole 的成員。 這表示 SQLAgentOperatorRole 的成員可以存取已授與 SQLAgentUserRole 或 SQLAgentReaderRole 的所有 SQL Server Agent Proxy,而且可以使用這些 Proxy。
下表摘要說明 SQL Server Agent 物件上的 SQLAgentOperatorRole 許可權。
行動 | 警報 | 運營商 | 當地工作 | 多伺服器作業 | 作業排程 | Proxy |
---|---|---|---|---|---|---|
建立/修改/刪除 | 否 | 否 | 是(僅限自有工作) 無法變更作業擁有權。 |
否 | 是(僅限擁有的排程) | 否 |
檢視清單 (列舉) | 是的 | 是的 可以取得適用於 sp_notify_operator 和 Management Studio 中 作業屬性 對話框的可用運算符清單。 |
是的 | 是的 | 是的 | 是的 |
啟用/停用 | 否 | 否 | 是的 SQLAgentOperatorRole 成員可以使用預存程式 sp_update_job ,並指定 @enabled 和 @job_id (或 @job_name )參數的值,來啟用或停用他們不擁有的本機作業。 如果此角色的成員指定這個預存程式的任何其他參數,則執行程序會失敗。 |
否 | 是的 SQLAgentOperatorRole 成員可以使用預存程序 sp_update_schedule ,並指定 @enabled 和 @schedule_id (或 @name )參數的值,來啟用或停用非他們擁有的排程。 如果此角色的成員指定這個預存程式的任何其他參數,則執行程序會失敗。 |
不適用 |
檢視屬性 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
編輯屬性 | 否 | 否 | 是(僅限擁有的工作) | 否 | 是(僅限擁有的行程) | 否 |
執行/停止/啟動 | 不適用 | 不適用 | 是的 | 否 | 不適用 | 不適用 |
檢視作業記錄 | 不適用 | 不適用 | 是的 | 是的 | 不適用 | 不適用 |
刪除作業歷程記錄 | 不適用 | 不適用 | 是的 | 否 | 不適用 | 不適用 |
連接/分離 | 不適用 | 不適用 | 不適用 | 不適用 | 是(只限於擁有的排程) | 不適用 |
將多個角色指派給使用者
系統管理員固定伺服器角色的成員可以存取所有 SQL Server Agent 功能。 如果使用者不是 系統管理員 角色的成員,但卻是多個 SQL Server Agent 固定資料庫角色的成員,請務必記住這些角色的層級許可權模型。 因為具有更多特殊許可權的角色一律包含較少特殊許可權角色的所有許可權,因此屬於多個角色的用戶會自動擁有與用戶所屬之最特殊許可權角色相關聯的許可權。