

# Roles de Agente SQL Server
<a name="SQLServerAgent.AgentRoles"></a>

RDS para SQL Server admite los siguientes roles de Agente SQL Server con diferentes niveles de permisos para administrar los trabajos:
+ **SQLAgentUserRole**

  Permisos
  + Crear y administrar trabajos, programaciones y operadores propios
  + Ver las propiedades de los trabajos y las programaciones propios
  + No puede ver ni administrar trabajos creados por otros usuarios

  Este rol es adecuado para usuarios que necesitan crear y administrar trabajos propios, pero no requieren acceso a los trabajos creados por otros usuarios.
+ **SQLAgentReaderRole**

  Permisos
  + Todos los permisos de SQLAgentUserRole
  + Ver una lista de todos los trabajos y programaciones, incluidos los creados por otros
  + Ver las propiedades de todos los trabajos
  + Consultar el historial de trabajos

  Este rol es adecuado para usuarios que necesitan supervisar el estado de todos los trabajos, pero no necesitan administrarlos.
+ **SQLAgentOperatorRole**

  Permisos
  + Todos los permisos de SQLAgentUserRole y SQLAgentReaderRole
  + Ejecutar, detener o iniciar trabajos
  + Administrar el historial de trabajos
  + Habilitar o deshabilitar trabajos y programaciones
  + Ver operadores y proxies

  Este rol proporciona los permisos más completos y es adecuado para usuarios que necesitan tener control total sobre todos los trabajos.

Utilice el siguiente comando para asignar los roles al inicio de sesión de SQL Server:

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

## Administración de SQLAgentOperatorRole en RDS para SQL Server
<a name="SQLServerAgent.AgentRoles.ManageSQLAgentOperatorRole"></a>

Para ver los trabajos actuales, debe agregar SQLAgentOperatorRole al inicio de sesión de SQL Server y eliminarlo antes de desconectarse de la base de datos.

Para visualizar el árbol de Agente SQL Server en SQL Server Management Studio, siga estas instrucciones:

**Visualización de Agente SQL Server en SQL Server Management Studio (SSMS)**

1. Con las credenciales maestras de RDS, inicie sesión en la instancia de RDS SQL Server y conceda al usuario deseado el rol 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
   ```

   Estos comandos crean el usuario en la base de datos `msdb`, en caso de que no exista. También agrega al usuario a SQLAgentUserRole, para que se pueda ver el árbol de Agente SQL Server en SSMS. Por último, concede permisos de alteración en SQLAgentOperatorRole al usuario. Esto permite al usuario agregarse o eliminarse de ese rol. 

1. Para agregarse al rol mencionado anteriormente, conéctese a la instancia de RDS SQL Server con el usuario que necesita ver los trabajos y ejecute el siguiente script.

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

   Después de esto, haga clic con el botón derecho en la carpeta **Trabajos** y elija **Actualizar**.

1. Al realizar esta acción, la pestaña **Trabajos** muestra el botón **\$1** (más). Haga clic para expandir la lista de trabajos de Agente SQL Server.

1. 
**importante**  
Antes de desconectarse de la instancia de RDS SQL Server, debe eliminarse de SQLAgentOperatorRole.

   Para eliminar el inicio de sesión de SQLAgentOperatorRole, ejecute la siguiente consulta antes de desconectarse o cerrar Management Studio:

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

Para obtener más información, consulte [Leveraging SQLAgentOperatorRole in RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).