

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# SQL Server Agent 角色
<a name="SQLServerAgent.AgentRoles"></a>

RDS for SQL Server 支援下列 SQL Server Agent 角色，具有不同層級的許可來管理任務：
+ **SQLAgentUserRole**

  許可
  + 建立和管理其本身的任務、排程和操作員
  + 檢視其本身任務和排程的屬性
  + 無法檢視或管理由其他使用者建立的任務

  此角色適用於需要建立和管理自己的任務，但不需要對其他使用者建立的任務進行存取的使用者。
+ **SQLAgentReaderRole**

  許可
  + SQLAgentUserRole 的所有許可
  + 檢視所有任務和排程的清單，包括其他人建立的
  + 檢視所有任務的屬性
  + 檢閱任務歷史記錄

  此角色適用於需要監控所有任務的狀態，但不需要管理任務的使用者。
+ **SQLAgentOperatorRole**

  許可
  + SQLAgentUserRole 和 SQLAgentReaderRole 的所有許可
  + 執行、停止或啟動任務
  + 管理任務歷史記錄
  + 啟用/停用任務和排程
  + 檢視操作員和代理

  此角色提供最全面的許可，適用於需要完整控制所有任務的使用者。

使用下列命令，將角色指派給您的 SQL Server 登入：

```
USE msdb;
EXEC sp_addrolemember 'SQLAgentOperatorRole', 'username';
```

## 管理 RDS for SQL Server 中的 SQLAgentOperatorRole
<a name="SQLServerAgent.AgentRoles.ManageSQLAgentOperatorRole"></a>

若要檢視目前的任務，您必須將 SQLAgentOperatorRole 新增至 SQL Server 登入，並在中斷與資料庫的連線之前將其移除。

若要在 SQL Server Management Studio 中視覺化 SQL Server Agent 樹狀結構，請依照下列指示操作：

**在 SQL Server Management Studio (SSMS) 上檢視 SQL Server Agent**

1. 使用 RDS 主要憑證登入 RDS SQL Server 執行個體，並且為所需的使用者授予 SQLAgentUserRole。

   ```
   USE msdb
   GO
   IF NOT EXISTS(SELECT name FROM sys.database_principals WHERE name = 'UserName')
   BEGIN
   CREATE USER UserName FROM LOGIN UserName
   END
   GO
   ALTER ROLE SQLAgentUserRole ADD MEMBER UserName
   GO
   GRANT ALTER ON ROLE::[SQLAgentOperatorRole] to UserName
   GO
   ```

   這些命令會在 `msdb` 資料庫上建立使用者 (如果不存在)。此外也會在 SQLAgentUserRole 上新增使用者，使 SSMS 上的 SQL Server Agent 樹狀結構得以顯示。最後，它會將 SQLAgentOperatorRole 的變更許可授予使用者。這可讓使用者在該角色中新增/移除自己。

1. 若要將自己新增至上述角色，請使用需要查看任務的使用者連線至 RDS SQL Server 執行個體，然後執行下列指令碼。

   ```
   use msdb
   go
   ALTER ROLE SQLAgentOperatorRole ADD MEMBER UserName
   GO
   ```

   接著，在**任務**資料夾上按一下滑鼠右鍵，然後選擇**重新整理**。

1. 當您執行此動作時，**任務**索引標籤會顯示 **\$1** (加號) 按鈕。按一下可展開 SQL Server Agent 任務的清單。

1. 
**重要**  
在中斷與 RDS SQL Server 執行個體的連線之前，您必須將自己從 SQLAgentOperatorRole 中移除。

   若要從 SQLAgentOperatorRole 中移除您的登入，請在將 Management Studio 中斷連線或關閉之前執行下列查詢：

   ```
   USE msdb
   GO
   ALTER ROLE SQLAgentOperatorRole DROP MEMBER UserName
   GO
   ```

如需詳細資訊，請參閱[在 RDS SQL Server 中使用 SQLAgentOperatorRole](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/)。