

# SQL Server エージェントのロール
<a name="SQLServerAgent.AgentRoles"></a>

RDS for SQL Server は、ジョブを管理するためのさまざまなレベルのアクセス許可を持つ、以下の SQL Server エージェントのロールをサポートしています。
+ **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 エージェントツリーを視覚化するには、次の手順に従います。

**SQL Server Management Studio (SSMS) で SQL Server エージェントを表示する**

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 にユーザーを追加し、SQL Server エージェントツリーを SSMS で表示できるようにします。最後に、SQLAgentOperatorRole に対する変更アクセス許可をユーザーに付与します。これにより、ユーザーはロールに対して自身を追加または削除できます。

1. 上記のロールに自分自身を追加するには、ジョブを表示する必要があるユーザーを使用して RDS SQL Server インスタンスに接続し、次のスクリプトを実行します。

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

   次に、**[ジョブ]** フォルダを右クリックし、**[更新]** を選択します。

1. このアクションを実行すると、**[ジョブ]** タブに **[\$1]** (プラス) ボタンが表示されます。クリックして SQL Server エージェントジョブのリストを展開します。

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/)」を参照してください。