SQL Server Agent 固定資料庫角色
適用於:SQL Server Azure SQL 受控執行個體
重要
Azure SQL 受控執行個體目前支援多數 (但非全部) 的 SQL Server Agent 功能。 如需詳細資料,請參閱 Azure SQL 受控執行個體與 SQL Server 之間的 T-SQL 差異。
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 物件總管中只能看見 [作業] 節點。
重要
SQLAgentReaderRole 和 SQLAgentOperatorRole 自動為 SQLAgentUserRole的成員。 這表示 SQLAgentReaderRole 和 SQLAgentOperatorRole 的成員可以存取所有授與 SQLAgentUserRole 的 SQL Server Agent Proxy,也可以使用這些 Proxy。
下表摘要出 SQLAgentUserRole 對 SQL Server Agent 物件所擁有的權限。
動作 | 操作員 | 本地工作 (僅限擁有的作業) | 作業排程 (僅限擁有的排程) | Proxy |
---|---|---|---|---|
建立/修改/刪除 | 否 | Yes 無法變更作業所有權。 |
是 | 否 |
檢視清單 (列舉) | Yes 可以取得可用操作員的清單,以便在 sp_notify_operator 和 Management Studio 的 [作業屬性] 對話框中使用。 |
Yes | .是 | 是 只在 Management Studio 的 [作業步驟屬性] 對話方塊中可用的 Proxy 清單。 |
啟用/停用 | 否 | .是 | 是 | 不適用 |
檢視屬性 | 否 | .是 | .是 | 否 |
執行/停止/啟動 | 不適用 | 是 | 不適用 | 不適用 |
檢視作業記錄 | 不適用 | 是 | 不適用 | 不適用 |
刪除作業記錄 | 不適用 | No SQLAgentUserRole 的成員必須明確被授與對 EXECUTE 的 sp_purge_jobhistory 權限,才能對他們擁有的作業刪除作業記錄。 他們無法刪除任何其他作業的作業記錄。 |
不適用 | 不適用 |
附加/卸離 | 不適用 | 不適用 | 是 | 不適用 |
SQLAgentReaderRole 權限
SQLAgentReaderRole 包括所有 SQLAgentUserRole 的權限,並擁有檢視可用的多伺服器作業清單、其屬性與記錄的權限。 此角色的成員也可以檢視所有可用作業的清單,和作業排程及其屬性,而非只有他們擁有的作業和作業排程。 SQLAgentReaderRole 成員無法變更作業擁有權來取得他們尚未擁有之作業的存取權。 SQLAgentReaderRole 的成員在 SQL Server Management Studio 物件總管中只能看見 [作業] 節點。
重要
SQLAgentReaderRole 的成員自動為 SQLAgentUserRole的成員。 這表示 SQLAgentReaderRole 的成員可以存取所有授與 SQLAgentUserRole 的 SQL Server Agent Proxy,也可以使用這些 Proxy。
下表摘要出 SQLAgentReaderRole 對 SQL Server Agent 物件所擁有的權限。
動作 | 操作員 | 本機作業 | 多伺服器作業 | 作業排程 | Proxy |
---|---|---|---|---|---|
建立/修改/刪除 | 否 | 是 (僅擁有的作業) 無法變更作業所有權。 |
No | 是 (僅擁有的排程) | 否 |
檢視清單 (列舉) | Yes 可以取得可用操作員的清單,以便在 sp_notify_operator 和 Management Studio 的 [作業屬性] 對話框中使用。 |
Yes | .是 | .是 | 是 只在 Management Studio 的 [作業步驟屬性] 對話方塊中可用的 Proxy 清單。 |
啟用/停用 | 否 | 是 (僅擁有的作業) | 否 | 是 (僅擁有的排程) | 不適用 |
檢視屬性 | 否 | .是 | .是 | .是 | 否 |
編輯屬性 | 否 | 是 (僅擁有的作業) | 否 | 是 (僅擁有的排程) | 否 |
執行/停止/啟動 | 不適用 | 是 (僅擁有的作業) | 否 | 不適用 | 不適用 |
檢視作業記錄 | 不適用 | 是 | 是 | 不適用 | 不適用 |
刪除作業記錄 | 不適用 | No SQLAgentReaderRole 的成員必須明確被授與對 EXECUTE 的 sp_purge_jobhistory 權限,才能對他們擁有的作業刪除作業記錄。 他們無法刪除任何其他作業的作業記錄。 |
No | 不適用 | 不適用 |
附加/卸離 | 不適用 | 不適用 | 不適用 | 是 (僅擁有的排程) | 不適用 |
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] 節點。 只有 [錯誤記錄檔] 節點對此角色的成員是不可見的。
重要
SQLAgentOperatorRole 的成員自動為 SQLAgentUserRole 和 SQLAgentReaderRole的成員。 這表示 SQLAgentOperatorRole 的成員可以存取所有獲授與 SQLAgentUserRole 或 SQLAgentReaderRole 的 SQL Server Agent Proxy,也可以使用這些 Proxy。
下表摘要出 SQLAgentOperatorRole 對 SQL Server Agent 物件所擁有的權限。
動作 | 警示 | 操作員 | 本機作業 | 多伺服器作業 | 作業排程 | Proxy |
---|---|---|---|---|---|---|
建立/修改/刪除 | 否 | 否 | 是 (僅擁有的作業) 無法變更作業所有權。 |
No | 是 (僅擁有的排程) | 否 |
檢視清單 (列舉) | 是 | Yes 可以取得可用操作員的清單,以便在 sp_notify_operator 和 Management Studio 的 [作業屬性] 對話框中使用。 |
Yes | .是 | .是 | 是 |
啟用/停用 | 否 | 無 | Yes SQLAgentOperatorRole 成員可以使用預存程序 sp_update_job 並指定 @enabled 和 @job_id (或 @job_name ) 參數的值來啟用或停用不是由他們擁有的本機作業。 如果此角色的成員為此預存程序指定任何其他參數,執行程序會失敗。 |
No | Yes SQLAgentOperatorRole 成員可以使用預存程序 sp_update_schedule 並指定 @enabled 和 @schedule_id (或 @name ) 參數的值來啟用或停用不是由他們擁有的排程。 如果此角色的成員為此預存程序指定任何其他參數,執行程序會失敗。 |
不適用 |
檢視屬性 | 是 | .是 | .是 | .是 | .是 | 是 |
編輯屬性 | 否 | 否 | 是 (僅擁有的作業) | 否 | 是 (僅擁有的排程) | 否 |
執行/停止/啟動 | 不適用 | 不適用 | 是 | 否 | 不適用 | 不適用 |
檢視作業記錄 | 不適用 | 不適用 | 是 | 是 | 不適用 | 不適用 |
刪除作業記錄 | 不適用 | 不適用 | 是 | 否 | 不適用 | 不適用 |
附加/卸離 | 不適用 | 不適用 | 不適用 | 不適用 | 是 (僅擁有的排程) | 不適用 |
將多個角色指派給使用者
sysadmin 固定伺服器角色的成員,可存取所有 SQL Server Agent 的功能。 如果使用者不是 sysadmin 角色的成員,但是是多個 SQL Server Agent 固定資料庫角色的成員,請記住這些角色是同心權限模型。 因為較多權限的角色永遠包含較少權限的角色的所有權限,因此使用者若為多個角色的成員,會自動擁有較多權限的角色成員所關聯的權限。