

# Perfis do SQL Server Agent
<a name="SQLServerAgent.AgentRoles"></a>

O RDS para SQL Server oferece suporte aos seguintes perfis do SQL Server Agent com diferentes níveis de permissões para gerenciar trabalhos:
+ **SQLAgentUserRole**

  Permissões
  + Criar e gerenciar seus próprios trabalhos, agendamentos e operadores
  + Visualizar as propriedades de seus próprios trabalhos e agendamentos
  + Não é possível visualizar ou gerenciar trabalhos criados por outros usuários

  Essa função é adequada para usuários que precisam criar e gerenciar seus próprios trabalhos, mas não requerem acesso aos trabalhos criados por outros usuários.
+ **SQLAgentReaderRole**

  Permissões
  + Todas as permissões de SQLAgentUserRole
  + Visualizar uma lista de todos os trabalhos e agendamentos, incluindo aqueles criados por outros
  + Visualizar as propriedades de todos os trabalhos
  + Veja o histórico de trabalhos

  Essa função é adequada para usuários que precisam monitorar o status de todos os trabalhos, mas não precisam gerenciá-los.
+ **SQLAgentOperatorRole**

  Permissões
  + Todas as permissões de SQLAgentUserRole e SQLAgentReaderRole
  + Executar, interromper ou iniciar trabalhos
  + Gerenciar o histórico de trabalhos
  + Ativar/desativar trabalhos e agendamentos
  + Visualizar operadores e proxies

  Esse perfil fornece as permissões mais abrangentes e é adequado para usuários que precisam ter controle total sobre todos os trabalhos.

Use o comando a seguir para atribuir as funções ao seu login do SQL Server:

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

## Gerenciamento do SQLAgentOperatorRole no RDS para SQL Server
<a name="SQLServerAgent.AgentRoles.ManageSQLAgentOperatorRole"></a>

Para visualizar os trabalhos atuais, você deve adicionar o SQLAgentOperatorRole ao seu login do SQL Server e removê-lo antes de se desconectar do banco de dados.

Para visualizar a árvore do SQL Server Agent no SQL Server Management Studio, siga estas instruções:

**Visualizar o SQL Server Agent no SQL Server Management Studio (SSMS)**

1. Usando as credenciais mestras do RDS, faça login na instância do SQL Server do RDS e conceda ao usuário desejado o 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
   ```

   Esses comandos criam o usuário no banco de dados `msdb`, caso ele não exista. Ele também adiciona o usuário ao SQLAgentUserRole, para que a árvore do SQL Server Agent no SSMS possa ser visualizada. Por fim, ele concede permissões de alteração no SQLAgentOperatorRole ao usuário. Isso permite que o usuário adicione/remova a si mesmo dessa função. 

1. Para se adicionar à função mencionada acima, conecte-se à instância do SQL Server do RDS com o usuário que precisa ver os trabalhos e execute o script a seguir.

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

   Depois disso, clique com o botão direito na pasta **Jobs** (Trabalhos) e escolha **Refresh** (Atualizar).

1. Quando você executa essa ação, a guia **Jobs** (Trabalhos) exibe um botão **\$1** (mais). Clique para expandir a lista de Jobs do SQL Server Agent.

1. 
**Importante**  
Antes de se desconectar da instância do SQL Server do RDS, você precisa se remover da SQLAgentOperatorRole.

   Para remover seu login do SQLAgentOperatorRole, execute a seguinte consulta antes de desconectar ou fechar o Management Studio:

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

Para ter mais informações, consulte [Leveraging SQLAgentOperatorRole in RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).