Создание роли RSExecRole

Reporting Services используют стандартную роль базы данных с именем RSExecRole, чтобы предоставить серверу отчетов разрешения в базе данных сервера отчетов. Роль RSExecRole создается автоматически с базой данных сервера отчетов. Как правило, никогда не следует изменять ее или назначать другим пользователям. Но при перемещении базы данных сервера отчетов в новое или иное ядро СУБД SQL Server вам придется повторно создать эту роль в системных базах данных Master и MSDB.

Чтобы выполнить следующие действия, выполните следующие действия.

  • Создание и предоставление роли RSExecRole в системной базе данных master.

  • Создание и предоставление роли RSExecRole в системной базе данных MSDB.

Примечание.

Инструкции в этом разделе предназначены для пользователей, которые не хотят запускать скрипт или писать код инструментария WMI для предоставления базы данных сервера отчетов. Если предстоит управлять большим развертыванием и регулярно перемещать базы данных, необходимо подготовить скрипт для автоматизации этих шагов. Дополнительные сведения см. в разделе Доступ к поставщику WMI для служб Reporting Services.

Перед началом работы

  • Создайте резервную копию ключей шифрования, чтобы их можно было восстановить после перемещения базы данных. Этот шаг не влияет непосредственно на возможность создания и подготовки RSExecRole, но для проверки работы необходимо создать резервную копию ключей. Дополнительные сведения см. в разделе Резервное копирование и восстановление ключей шифрования служб Reporting Services.

  • Убедитесь, что вы вошли в систему в качестве учетной записи пользователя с разрешениями sysadmin в экземпляре SQL Server.

  • Проверьте, что служба агента SQL Server установлена и работает на экземпляре ядра СУБД, который планируется использовать.

  • Присоедините базы данных ReportServerTempDB и ReportServer. Для создания фактической роли не требуется присоединить базы данных, но их необходимо подключить, прежде чем протестировать работу.

Инструкции для создания роли RSExecRole вручную предназначены для использования в контексте миграции установки сервера отчетов. Важные задачи, такие как резервное копирование и перемещение базы данных сервера отчетов, не рассматриваются в этой статье, но описаны в документации по ядро СУБД.

Создание роли RSExecRole в базе данных master

Reporting Services используют расширенные хранимые процедуры для службы агента SQL Server. Следующие шаги поясняют, как предоставить разрешения EXECUTE для процедур роли RSExecRole .

Создание RSExecRole в базе данных master system с помощью Management Studio

  1. Запустите SQL Server Management Studio и установите соединение с экземпляром ядра СУБД, на котором находятся базы данных сервера отчетов.

  2. Откройте узел Базы данных.

  3. Откройте узел Системные базы данных.

  4. Откройте узел master.

  5. Откройте Безопасность.

  6. Откройте Роли.

  7. Щелкните правой кнопкой мыши Роли базы данныхи выберите пункт Создать роль базы данных. Откроется страница создания роли базы данных.

  8. В поле "Имя роли" введите RSExecRole.

  9. В поле "Владелец" введите dbo.

  10. Выбор Защищаемые объекты страницы.

  11. Нажмите Поиск. Отображается диалоговое окно Добавление объектов . Параметр Определенные объекты выбран по умолчанию.

  12. Нажмите ОК. Появится диалоговое окно Выбор объектов .

  13. Выберите типы объектов.

  14. Выберите расширенные хранимые процедуры.

  15. Нажмите ОК.

  16. Выберите Обзор.

  17. Прокрутите список вниз и выберите следующие процедуры:

    1. xp_sqlagent_enum_jobs

    2. xp_sqlagent_is_starting

    3. xp_sqlagent_notify

  18. Нажмите кнопку "ОК" и снова нажмите кнопку "ОК".

  19. В строке Выполнить установите флажок в столбце Предоставить.

  20. Повторите действия для каждой оставшейся хранимой процедуры. РольRSExecRole должна иметь разрешения EXECUTE для всех трех хранимых процедур.

  21. Нажмите кнопку ОК для завершения.

Снимок экрана: страница

Создание роли RSExecRole в базе данных msdb

Службы Reporting Services используют хранимые процедуры для службы агента SQL Server и получают сведения о заданиях из системных таблиц для поддержки запланированных действий. Следующие шаги поясняют, как предоставить роли RSExecRole разрешения EXECUTE для процедур и разрешений SELECT в таблицах.

Создание RSExecRole в системной базе данных MSDB

  1. Повторите аналогичные шаги, чтобы предоставить разрешения хранимым процедурам и таблицам в базе данных msdb. Чтобы упростить шаги, необходимо подготовить хранимые процедуры и таблицы отдельно.

  2. Откройте узел MSDB.

  3. Откройте Безопасность.

  4. Откройте Роли.

  5. Щелкните правой кнопкой мыши Роли базы данныхи выберите пункт Создать роль базы данных. Отображается страница «Общие».

  6. В поле "Имя роли" введите RSExecRole.

  7. В поле "Владелец" введите dbo.

  8. Перейдите на страницу Защищаемые объекты.

  9. Нажмите Поиск. Отображается диалоговое окно Добавление объектов . Параметр Выбрать объекты выбран по умолчанию.

  10. Нажмите ОК.

  11. Выберите типы объектов.

  12. Выберите хранимые процедуры.

  13. Нажмите ОК.

  14. Выберите Обзор.

  15. Прокрутите список элементов вниз и выберите следующие хранимые процедуры:

    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. Нажмите кнопку "ОК" и снова нажмите кнопку "ОК".

  17. Выберите первую хранимую процедуру sp_add_category.

  18. В строке "Выполнить" в столбце "Предоставление" установите флажок.

  19. Повторите действия для каждой оставшейся хранимой процедуры. RSExecRole необходимо предоставить разрешения execute для всех 10 хранимых процедур.

  20. На странице "Защищаемые объекты" снова выберите "Поиск". Отображается диалоговое окно Добавление объектов . Параметр Выбрать объекты выбран по умолчанию.

  21. Нажмите ОК.

  22. Выберите типы объектов.

  23. Выберите Таблицы.

  24. Нажмите ОК.

  25. Выберите Обзор.

  26. Прокрутите список элементов вниз и выберите следующие таблицы:

    1. syscategories

    2. sysjobs

  27. Нажмите кнопку "ОК" и снова нажмите кнопку "ОК".

  28. Выберите первую таблицу — syscategories.

  29. В строке "Выбор " в столбце "Предоставить " установите флажок.

  30. Повторите для таблицы sysjobs. Роли RSExecRole должны быть предоставлены разрешения SELECT для обеих таблиц.

  31. Нажмите кнопку ОК для завершения.

Перемещение базы данных сервера отчетов

После создания ролей можно переместить базу данных сервера отчетов на новый экземпляр SQL Server. Дополнительные сведения см. в разделе "Перемещение баз данных сервера отчетов на другой компьютер".

Если вы обновляете ядро СУБД до SQL Server 2016 или более поздней версии, его можно обновить до или после перемещения базы данных.

База данных сервера отчетов обновляется автоматически, когда сервер отчетов подключается к нему. Для обновления этой базы данных не требуется никаких конкретных шагов.

Восстановление ключей шифрования и проверка проделанной работы

Если вы подключили базы данных сервера отчетов, теперь вы сможете выполнить следующие действия, чтобы проверить работу.

Проверка работоспособности сервера отчетов после перемещения базы данных

  1. Запустите программу настройки служб Reporting Services и подключитесь к серверу отчетов.

  2. Выберите базу данных.

  3. Нажмите кнопку Изменить базу данных.

  4. Нажмите кнопку Выбрать существующую базу данных сервера отчетов.

  5. Введите имя экземпляра сервера компонента Database Engine. При присоединении баз данных сервера отчетов к именованному экземпляру необходимо ввести имя экземпляра в этом формате: <имя>_сервера\<имя>_экземпляра.

  6. Выберите Проверить подключение. Должно появиться диалоговое окно с сообщением "Проверка подключения выполнена успешно".

  7. Щелкните ОК, чтобы закрыть это диалоговое окно, а затем выберите Далее.

  8. На странице «База данных» выберите базу данных сервера отчетов.

  9. Нажмите кнопку "Далее " и завершите работу мастера.

  10. Выберите ключи шифрования.

  11. Выберите Восстановить.

  12. Выберите файл ключа для строгого имени (SNK), который содержит резервную копию симметричного ключа, используемого для расшифровки сохраненных учетных данных и сведений о соединении с базой данных сервера отчетов.

  13. Введите пароль и нажмите кнопку "ОК".

  14. Выберите URL-адрес веб-портала.

  15. Выберите ссылку, чтобы открыть веб-портал. Будут отображены элементы сервера отчетов из базы данных сервера отчетов.

Создание роли и разрешений RSExecRole с помощью T-SQL

Роль также можно создать и предоставить применимые разрешения в системных базах данных с помощью следующего скрипта T-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