Sql-Server

角色和計劃的工作

  • July 23, 2018

我有一些實例是一些 BI 團隊可以在 sql 代理中創建自己的計劃作業。

然而,我也有一些家政工作,我不希望他們干涉。我可以創建一個角色並指定只有具有該角色的人才能更新家政工作嗎?

如果有怎麼辦?

根據SQL Server Agent Fixed Database Roles中的資訊,似乎非系統管理員使用者必須是 msdb 中以下固定數據庫角色之一的成員才能使用 SQL 代理:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

上述每個固定數據庫角色逐漸允許比前一個角色更多的權限,但是關於能夠修改作業,所有三個都表明權限僅授予擁有的作業

我解釋這篇文章中資訊的方式是,如果您不是 sysadmin 固定角色的成員,您只有權限修改您擁有的作業,無論是個人還是 Windows 組。

您應該能夠通過創建兩個或更多使用者,將他們分配給上述固定數據庫角色之一(確保他們不是 sysadmin 的成員),在每個使用者下創建單獨的作業,然後嘗試更改作業而不是輕鬆地測試這個理論。由該使用者擁有。

我在下麵包含了一些關於上面提到的每個固定數據庫角色的權限的資訊(突出顯示我的)。

SQLAgentUserRole 權限

SQLAgentUserRole 是 SQL Server 代理固定數據庫角色中權限最低的角色。它僅對操作員、本地作業和作業計劃具有權限。**SQLAgentUserRole 的成員僅對他們擁有的本地作業和作業計劃具有權限。**他們不能使用多伺服器作業(主伺服器作業和目標伺服器作業),也不能更改作業所有權來訪問他們尚未擁有的作業。SQLAgentUserRole 成員只能在 SQL Server Management Studio 的“作業步驟屬性”對話框中查看可用代理列表。只有 SQL Server Management Studio 對象資源管理器中的作業節點對 SQLAgentUserRole 的成員可見。

SQLAgentReaderRole 權限

SQLAgentReaderRole 包括所有 SQLAgentUserRole 權限以及查看可用多伺服器作業列表、其屬性和歷史記錄的權限。此角色的成員還可以查看所有可用作業和作業計劃及其屬性的列表,而不僅僅是他們擁有的那些作業和作業計劃。 **SQLAgentReaderRole 成員無法更改作業所有權來訪問他們尚未擁有的作業。**只有 SQL Server Management Studio 對象資源管理器中的作業節點對 SQLAgentReaderRole 的成員可見。

SQLAgentOperatorRole 權限

SQLAgentOperatorRole 是 SQL Server 代理固定數據庫角色中特權最高的角色。它包括 SQLAgentUserRole 和 SQLAgentReaderRole 的所有權限。此角色的成員還可以查看操作員和代理的屬性,並列舉伺服器上可用的代理和警報。

SQLAgentOperatorRole 成員對本地作業和計劃具有額外的權限。他們可以執行、停止或啟動所有本地作業,並且可以刪除伺服器上任何本地作業的作業歷史記錄。他們還可以啟用或禁用伺服器上的所有本地作業和計劃。要啟用或禁用本地作業或計劃,此角色的成員必須使用儲存過程 sp_update_job 和 sp_update_schedule。SQLAgentOperatorRole 的成員只能指定指定作業或調度名稱或標識符的參數以及@enabled 參數。如果它們指定任何其他參數,則這些儲存過程的執行將失敗。SQLAgentOperatorRole 成員無法更改作業所有權以訪問他們尚未擁有的作業。

SQL Server Management Studio 對象資源管理器中的作業、警報、操作員和代理節點對 SQLAgentOperatorRole 的成員可見。只有錯誤日誌節點對此角色的成員不可見。

引用自:https://dba.stackexchange.com/questions/212943