Compartir vía


Crear el RSExecRole

Reporting Services utiliza un rol de base de datos predefinido denominado RSExecRole para conceder permisos de servidor de informes a la base de datos del servidor de informes. El rol RSExecRole se crea automáticamente con la base de datos del servidor de informes. Por lo general, nunca se debe modificar el rol ni asignar otros usuarios al mismo. Sin embargo, cuando se mueve una base de datos del servidor de informes a un Motor de base de datos de SQL Server nuevo o diferente, se debe volver a crear el rol en las bases de datos del sistema MSDB y maestra.

Use estas instrucciones para realizar los siguientes pasos:

  • Crear y aprovisionar el rol RSExecRole en la base de datos del sistema Master.

  • Crear y aprovisionar el rol RSExecRole en la base de datos del sistema MSDB.

Nota

Las instrucciones de este tema están destinadas a los usuarios que no desean ejecutar un script o escribir código WMI para proporcionar la base de datos del servidor de informes. Si administra una implementación grande y va a mover las bases de datos habitualmente, debe escribir un script para automatizar estos pasos. Para obtener más información, vea Obtener acceso al proveedor WMI de Reporting Services.

Antes de empezar

  • Realice una copia de seguridad de las claves de cifrado para poder restaurarlas después de mover la base de datos. Este paso no afecta directamente a la capacidad personal para crear y proporcionar el rol RSExecRole, pero se debe disponer de una copia de seguridad de las claves para comprobar el trabajo. Para obtener más información, vea Hacer copia de seguridad y restaurar claves de cifrado de Reporting Services.

  • Compruebe que ha iniciado sesión con una cuenta de usuario que tenga permisos sysadmin en la instancia de SQL Server.

  • Compruebe que el servicio Agente SQL Server está instalado y en ejecución en la instancia del Motor de base de datos que piensa utilizar.

  • Adjunte las bases de datos ReportServerTempDB y ReportServer. No es necesario que adjunte las bases de datos para crear el rol real, pero deben estar adjuntas para poder probar el trabajo.

Las instrucciones para crear manualmente el rol RSExecRole están destinadas a utilizarse en el contexto de migración de una instalación del servidor de informes. Las tareas importantes como realizar una copia de seguridad y mover la base de datos del servidor de informes no se tratan en este artículo, pero se incluyen en la documentación del motor de base de datos.

Crear RSExecRole en la base de datos maestra

Reporting Services utiliza procedimientos almacenados extendidos para que el servicio Agente SQL Server admita las operaciones programadas. En los pasos siguientes se explica cómo conceder permisos de ejecución para los procedimientos al rol RSExecRole .

Crear el rol RSExecRole en la base de datos del sistema maestra mediante Management Studio

  1. Inicie SQL Server Management Studio y establezca una conexión con la instancia del Motor de base de datos que hospeda la base de datos del servidor de informes.

  2. Abra Bases de datos.

  3. Abra Bases de datos del sistema.

  4. Abra Maestra.

  5. Abra Seguridad.

  6. Abra Roles.

  7. Haga clic con el botón derecho en Roles de base de datosy seleccione Nuevo rol de la base de datos. Aparece la página Rol de base de datos - Nuevo.

  8. En Nombre de rol, escriba RSExecRole.

  9. En Propietario, escriba dbo.

  10. Seleccione la página Elementos protegibles.

  11. Selecciona Search. Aparece el cuadro de diálogo Agregar objetos . La opción Especificar objetos está seleccionada de forma predeterminada.

  12. Seleccione Aceptar. Aparece el cuadro de diálogo Seleccionar objetos .

  13. Seleccione Tipos de objeto.

  14. Seleccione Procedimientos almacenados extendidos.

  15. Seleccione Aceptar.

  16. Selecciona Examinar.

  17. Desplácese hacia abajo en la lista y seleccione los siguientes:

    1. xp_sqlagent_enum_jobs

    2. xp_sqlagent_is_starting

    3. xp_sqlagent_notify

  18. Seleccione Aceptar y, a continuación, seleccione Aceptar de nuevo.

  19. En la fila Ejecutar, en la columna Conceder, haga clic en la casilla.

  20. Repita este paso con cada uno de los procedimientos almacenados restantes. RSExecRole debe tener concedidos permisos de ejecución para los tres procedimientos almacenados.

  21. Seleccione Aceptar para finalizar.

Captura de pantalla que muestra la página Propiedades del rol de base de datos.

Crear el rol RSExecRole en la base de datos MSDB

Reporting Services utiliza procedimientos almacenados para el servicio Agente SQL Server y recupera información de los trabajos en las tablas del sistema para admitir las operaciones programadas. En los pasos siguientes se explica cómo conceder al rol RSExecRole permisos de ejecución para los procedimientos y permisos de selección en las tablas.

Crear el rol RSExecRole en la base de datos del sistema MSDB

  1. Repita los pasos similares para conceder permisos a procedimientos almacenados y tablas en MSDB. Para simplificar los pasos, proporcionará los procedimientos almacenados y las tablas de forma independiente.

  2. Abra MSDB.

  3. Abra Seguridad.

  4. Abra Roles.

  5. Haga clic con el botón derecho en Roles de base de datosy seleccione Nuevo rol de la base de datos. Aparece la página General.

  6. En Nombre de rol, escriba RSExecRole.

  7. En Propietario, escriba dbo.

  8. Seleccione la página Elementos protegibles.

  9. Selecciona Search. Aparece el cuadro de diálogo Agregar objetos . La opción Especificar objetos está seleccionada de forma predeterminada.

  10. Seleccione Aceptar.

  11. Seleccione Tipos de objeto.

  12. Seleccione Procedimiento almacenado.

  13. Seleccione Aceptar.

  14. Selecciona Examinar.

  15. Desplácese hacia abajo en la lista de procedimientos almacenados extendidos y seleccione los siguientes:

    1. sp_add_category

    2. sp_add_job

    3. sp_add_jobschedule

    4. sp_add_jobserver

    5. sp_add_jobstep

    6. sp_delete_job

    7. sp_help_category

    8. sp_help_job

    9. sp_help_jobschedule

    10. sp_verify_job_identifiers

  16. Seleccione Aceptar y, a continuación, elija Aceptar de nuevo.

  17. Seleccione el primer procedimiento almacenado: sp_add_category.

  18. En la fila Ejecutar, en la columna Conceder, seleccione la casilla.

  19. Repita este paso con cada uno de los procedimientos almacenados restantes. Se deben conceder al rol RSExecRole permisos de ejecución para los 10 procedimientos almacenados.

  20. Todavía en la página Elementos protegibles, seleccione Buscar de nuevo. Aparece el cuadro de diálogo Agregar objetos . La opción Especificar objetos está seleccionada de forma predeterminada.

  21. Seleccione Aceptar.

  22. Seleccione Tipos de objeto.

  23. Seleccione Tablas.

  24. Seleccione Aceptar.

  25. Selecciona Examinar.

  26. Desplácese hacia abajo en la lista de elementos y seleccione las siguientes tablas:

    1. syscategories

    2. sysjobs

  27. Seleccione Aceptar y, a continuación, seleccione Aceptar de nuevo.

  28. Seleccione la primera tabla: syscategories.

  29. En la fila Select, en la columna Grant, seleccione la casilla.

  30. Repita este procedimiento con la tabla sysjobs. Se deben conceder al rol RSExecRole permisos de selección para ambas tablas.

  31. Seleccione Aceptar para finalizar.

Mover la base de datos del servidor de informes

Después de crear los roles, puede mover la base de datos del servidor de informes a una instancia nueva de SQL Server. Para más información, vea Mover las bases de datos del servidor de informes a otro equipo.

Si va a actualizar el Motor de base de datos a SQL Server 2016 o una versión posterior, puede hacerlo antes o después de mover la base de datos.

La base de datos del servidor de informes se actualiza automáticamente cuando el servidor de informes se conecta a ella. No hay ningún paso concreto requerido para actualizar la base de datos.

Restaurar las claves de cifrado y comprobar el trabajo

Si ha adjuntado las bases de datos del servidor de informes, ahora debe poder completar los pasos siguientes para comprobar el trabajo.

Comprobar la capacidad de operación del servidor de informes después de mover una base de datos

  1. Inicie la herramienta Configuración de Reporting Services y conéctese al servidor de informes.

  2. Seleccione base de datos.

  3. Seleccione Cambiar base de datos.

  4. Seleccione Elegir una base de datos del servidor de informes existente.

  5. Escriba el nombre del servidor del motor de base de datos. Si ha adjuntado las bases de datos del servidor de informes a una instancia con nombre, debe escribir el nombre de la instancia con este formato: <nombreDeServidor>\<nombreDeInstancia>.

  6. Selecciona Probar conexión. Debería ver un cuadro de diálogo que indica "Prueba de conexión realizada correctamente".

  7. Seleccione Aceptar para cerrar el cuadro de diálogo y, a continuación, seleccione Siguiente.

  8. En Base de datos, seleccione la base de datos del servidor de informes.

  9. Seleccione Siguiente y complete el asistente.

  10. Seleccione Claves de cifrado.

  11. Seleccione Restaurar.

  12. Seleccione el archivo seguro (.snk) que tiene la copia de seguridad de la clave simétrica utilizada para descifrar las credenciales almacenadas y la información de conexión en la base de datos del servidor de informes.

  13. Escriba la contraseña y seleccione Aceptar.

  14. Selecciona Dirección URL del portal web.

  15. Seleccione el vínculo para abrir el portal web. Debe ver los elementos del servidor de informes de la base de datos del servidor de informes.

Creación del rol RSExecRole y permisos mediante Transact-SQL

También se puede crear el rol, y los permisos concedidos aplicables, en las bases de datos del sistema mediante el siguiente script de Transact-SQL:

USE master;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
    CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.xp_sqlagent_enum_jobs TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_is_starting TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_notify TO [RSExecRole];
GO
USE msdb;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
    CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.sp_add_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobserver TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobstep TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_delete_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_verify_job_identifiers TO [RSExecRole];
GRANT SELECT ON dbo.syscategories TO [RSExecRole];
GRANT SELECT ON dbo.sysjobs TO [RSExecRole];
GO