SQL Serverで、個別のデータベースに対して、権限を与えても、SQL Server エージェントのジョブの部分はSQL Server Management Studio(SSMS)には、「SQL Server エージェント」も「ジョブ」も表示されない。これの権限は、データベースの権限とは別につける必要がある。
SQL Serverのジョブ(SQL Server エージェント)に権限を付ける一番簡単な方法は、以下の操作でsysadmin権限の付与を行う。
- SSMSを使って、管理者権限のあるユーザでSQL Serverに接続する。
- SSMSのオブジェクトエクスプローラーで、「セキュリティ」「サーバー ロール」の順に開く(展開する)。
- サーバーロールに表示された「sysadmin」を右クリックして、プロパティを開く。
- プロパティの「メンバー」の「追加」をクリックする
- 権限を与えるユーザを指定して、OKをクリックする。
これで権限が付与されるので、権限を与えたユーザで、SSMSで接続して、「SQL Server エージェント」と「ジョブ」が表示されることを確認する。
もし、SQL Server エージェントだけの権限を与える必要がある場合は、データベースの「msdb」にあるロールを割り当てる。
- SSMSを使って、管理者権限のあるユーザでSQL Serverに接続する。
- 「セキュリティ」、「ログイン」から、SQL Server エージェントを使わせるユーザのプロパティを開く
- 「ユーザーマッピング」を開く。
- 「msdb」にチェックをいれ、選択した状態にする
- ロールの「SQLAgent~~~」で、最適な権限を選択して、OKをクリックする。
選択できるロールの概要は以下。
SQLAgentUserRole
→SSMSで接続したときに、SQL Serverエージェントが表示される。
表示されるのは、接続ユーザの権限があるもののみ。
SQLAgentReaderRole
→SSMSで接続したときに、SQL Serverエージェントが表示される。
他のユーザのSQL Serverのジョブも表示される。
メニューで、ジョブが実行できるように見えるが、実行すると権限がないものはエラーになる。
SQLAgentOperatorRole
→SSMSで接続したときに、SQL Serverエージェントが表示される。
SQL Serverのジョブの表示や実行ができる。