Erstellen der Rolle RSExecRole

Reporting Services verwendet eine vordefinierte Datenbankrolle namens RSExecRole, um Berichtsserverberechtigungen für die Berichtsserver-Datenbank zu gewähren. Die Rolle RSExecRole wird automatisch mit der Berichtsserver-Datenbank erstellt. Als Faustregel gilt, dass Sie sie nie ändern und ihr keine anderen Benutzer zuweisen sollten. Wenn Sie die Berichtsserver-Datenbank jedoch auf eine neue oder andere SQL Server-Datenbank-Engine verlagern, müssen Sie die Rolle in den Systemdatenbanken Master und msdb neu erstellen.

Führen Sie die folgenden Schritte nach den folgenden Anweisungen aus:

  • Erstellen Sie die Rolle RSExecRole , und stellen Sie sie in der Systemdatenbank Master bereit.

  • Erstellen Sie die Rolle RSExecRole , und stellen Sie sie in der Systemdatenbank MSDB bereit.

Hinweis

Die Anweisungen in diesem Thema sind für Benutzer vorgesehen, die zur Bereitstellung der Berichtsserver-Datenbank kein Skript ausführen oder WMI-Code schreiben möchten. Wenn Sie eine umfangreiche Bereitstellung verwalten und regelmäßig Datenbanken verschieben, sollten Sie ein Skript zur Automatisierung dieser Schritte schreiben. Weitere Informationen finden Sie unter Zugreifen auf den Reporting Services-WMI-Anbieter.

Vorbereitung

  • Sichern Sie die Verschlüsselungsschlüssel, damit Sie sie wiederherstellen können, nachdem die Datenbank verschoben wurde. Dieser Schritt wirkt sich nicht direkt auf die Möglichkeit zum Erstellen und Bereitstellen der Rolle RSExecRole aus. Sie müssen jedoch über eine Sicherung der Schlüssel verfügen, um die durchgeführten Schritte verifizieren zu können. Weitere Informationen finden Sie unter Back Up and Restore Reporting Services Encryption Keys.

  • Überzeugen Sie sich davon, dass Sie unter einem Benutzerkonto angemeldet sind, das über sysadmin-Berechtigungen für die Microsoft SQL-Server-Instanz verfügt.

  • Überprüfen Sie, ob der SQL Server-Agent-Dienst installiert wurde und auf der Instanz der Datenbank-Engine-Instanz ausgeführt wird, die Sie verwenden möchten.

  • Fügen Sie die Datenbanken ReportServerTempDB und ReportServer an. Zum Erstellen der Rolle ist das Anfügen der Datenbanken nicht erforderlich. Die Datenbanken müssen jedoch angefügt werden, damit Sie Ihre Implementierung testen können.

Die Anweisungen zum manuellen Erstellen der Rolle RSExecRole sollen im Kontext einer Migration der Berichtsserver-Installation verwendet werden. In diesem Artikel wird auf wichtige Aufgaben, wie z. B. das Sichern und Verschieben der Berichtsserver-Datenbank, nicht eingegangen. Diese Aufgaben werden aber in der Dokumentation zur Datenbank-Engine beschrieben.

Erstellen der Rolle RSExecRole in „master“

Berichterstellungsdienst wird durch den Einsatz von erweiterten gespeicherten Prozeduren sichergestellt, dass der SQL Server-Agent-Dienst geplante Vorgänge unterstützt. Die folgenden Schritte erklären, wie der Rolle RSExecRole Berechtigungen zum Ausführen der Prozeduren gewährt werden.

Erstellen der Rolle RSExecRole mit Management Studio in der Systemdatenbank Master

  1. Starten Sie SQL Server Management Studio, und stellen Sie eine Verbindung mit der SQL Datenbank-Engine-Instanz her, die als Host für die Berichtsserver-Datenbank fungiert.

  2. Öffnen Sie Datenbanken

  3. Öffnen Sie Systemdatenbanken.

  4. Öffnen Sie Master.

  5. Öffnen Sie Sicherheit.

  6. Öffnen Sie Rollen.

  7. Klicken Sie mit der rechten Maustaste auf Datenbankrollen, und wählen Sie Neue Datenbankrolleaus. Die Seite Database Role - New (Datenbankrolle - Neu) wird angezeigt.

  8. Geben Sie unter Rollenname RSExecRole ein.

  9. Geben Sie unter Besitzer dbo ein.

  10. Navigieren Sie zur Seite Sicherungsfähige Elemente.

  11. Klicken Sie auf Suchen. Das Dialogfeld Objekte hinzufügen wird angezeigt. Standardmäßig ist die Option Bestimmte Objekte aktiviert.

  12. Wählen Sie OK aus. Das Dialogfeld Objekte auswählen wird angezeigt.

  13. Wählen Sie Objekttypen aus.

  14. Wählen Sie Erweiterte gespeicherte Prozeduren aus.

  15. Wählen Sie OK aus.

  16. Wählen Sie Durchsuchen aus.

  17. Scrollen Sie in der Liste nach unten und wählen Sie die folgenden Prozeduren aus:

    1. xp_sqlagent_enum_jobs

    2. xp_sqlagent_is_starting

    3. xp_sqlagent_notify

  18. Wählen Sie OK dann noch einmal OK aus.

  19. Aktivieren Sie das Kontrollkästchen in der Zeile Ausführen in der Spalte Erteilen.

  20. Wiederholen Sie diesen Schritt für alle übrigen gespeicherten Prozeduren. Der RolleRSExecRole müssen Berechtigungen zum Ausführen aller drei gespeicherten Prozeduren gewährt werden.

  21. Klicken Sie auf OK, um den Vorgang abzuschließen.

Screenshot, der die Datenbankrolle der Eigenschaftenseite zeigt.

Erstellen der Rolle 'RSExecRole' in 'MSDB'

Reporting Services verwendet gespeicherte Prozeduren für den SQL Server-Agent-Dienst und ruft zur Unterstützung geplanter Vorgänge Auftragsinformationen ab. Die folgenden Schritte erklären, wie der Rolle RSExecRole Berechtigungen zum Ausführen der Prozeduren und zum Auswählen der Tabellen gewährt werden.

Erstellen der Rolle RSExecRole in der Systemdatenbank MSDB

  1. Wiederholen Sie ähnliche Schritte, um Berechtigungen für gespeicherte Prozeduren und Tabellen in MSDB zu erteilen. Um die Schritte zu vereinfachen, stellen Sie die gespeicherten Prozeduren und die Tabellen getrennt bereit.

  2. Öffnen Sie MSDB.

  3. Öffnen Sie Sicherheit.

  4. Öffnen Sie Rollen.

  5. Klicken Sie mit der rechten Maustaste auf Datenbankrollen, und wählen Sie Neue Datenbankrolleaus. Die Seite Allgemein wird angezeigt.

  6. Geben Sie unter Rollennamen RSExecRole ein.

  7. Geben Sie für Besitzer dbo ein.

  8. Navigieren Sie zur Seite Sicherungsfähige Elemente.

  9. Klicken Sie auf Suchen. Das Dialogfeld Objekte hinzufügen wird angezeigt. Standardmäßig ist die Option Objekte angeben aktiviert.

  10. Wählen Sie OK aus.

  11. Wählen Sie Objekttypen aus.

  12. Wählen Sie Gespeicherte Prozeduren aus.

  13. Wählen Sie OK aus.

  14. Wählen Sie Durchsuchen aus.

  15. Scrollen Sie in der Liste der Elemente nach unten und wählen Sie die folgenden gespeicherten Prozeduren aus:

    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. Wählen Sie OK und dann noch einmal OK aus.

  17. Wählen Sie die erste gespeicherte Prozedur aus: sp_add_category.

  18. Aktivieren Sie das Kontrollkästchen in der Zeile Ausführen in der Spalte Erteilen.

  19. Wiederholen Sie diesen Schritt für alle übrigen gespeicherten Prozeduren. Der Rolle RSExecRole müssen Berechtigungen zum Ausführen aller zehn gespeicherten Prozeduren gewährt werden.

  20. Wählen Sie auf der Seite Sicherungsfähige Elemente noch mal Suchen aus. Das Dialogfeld Objekte hinzufügen wird angezeigt. Standardmäßig ist die Option Objekte angeben aktiviert.

  21. Wählen Sie OK aus.

  22. Wählen Sie Objekttypen aus.

  23. Wählen Sie Tabellen aus.

  24. Wählen Sie OK aus.

  25. Wählen Sie Durchsuchen aus.

  26. Scrollen Sie in der Liste der Elemente nach unten und wählen Sie die folgenden Tabellen aus:

    1. syscategories

    2. sysjobs

  27. Wählen Sie OK dann noch einmal OK aus.

  28. Wählen Sie die erste Tabelle aus: syscategories.

  29. Aktivieren Sie das Kontrollkästchen in der Zeile Auswählen in der Spalte Erteilen.

  30. Wiederholen Sie diesen Schritt für die Tabelle sysjobs. Die Rolle RSExecRole muss Berechtigungen zum Auswählen beider Tabellen erhalten.

  31. Klicken Sie auf OK, um den Vorgang abzuschließen.

Verlagern der Berichtsserver-Datenbank

Nachdem Sie die Rollen erstellt haben, können Sie die Berichtsserver-Datenbank auf eine andere SQL Server-Instanz verschieben. Weitere Informationen finden Sie unter Verschieben von Berichtsserver-Datenbanken auf einen anderen Computer.

Das Upgrade von Datenbank-Engine auf SQL Server 2016 und höher können Sie vor oder nach dem Verschieben der Datenbank durchführen.

Die Berichtsserver-Datenbank wird automatisch upgegradet, wenn der Berichtsserver eine Verbindung mit der Datenbank herstellt. Zum Aktualisieren der Datenbank müssen keine bestimmten Schritte ausgeführt werden.

Wiederherstellen von Verschlüsselungsschlüsseln und Überprüfen der Arbeit

Nachdem die Berichtsserver-Datenbanken angefügt wurden, sollten Sie die folgenden Schritte ausführen können, um Ihre Implementierung zu überprüfen.

Überprüfen der Funktionsfähigkeit des Berichtsservers nach einer Datenbankverschiebung

  1. Starten Sie das Reporting Services-Konfigurationstool, und stellen Sie eine Verbindung mit dem Berichtsserver her.

  2. Wählen Sie Datenbank aus.

  3. Wählen Sie Datenbank ändernaus.

  4. Wählen Sie Vorhandene Berichtsserver-Datenbank auswählenaus.

  5. Geben Sie den Servernamen der Datenbank-Engine ein. Wenn Sie die Berichtsserver-Datenbanken an eine benannte Instanz angefügt haben, müssen Sie den Instanznamen im folgenden Format eingeben: <Servername>\<Instanzname>.

  6. Wählen Sie Verbindung testen aus. Es sollte ein Dialogfeld mit folgender Meldung angezeigt werden: „Der Verbindungstest war erfolgreich.“

  7. Klicken Sie zunächst auf OK, um das Dialogfeld zu schließen, und anschließend auf Weiter.

  8. Wählen Sie die Berichtsserver-Datenbank aus.

  9. Klicken Sie auf Weiter und schließen Sie den Assistenten ab.

  10. Wählen Sie Schlüssel aus.

  11. Wählen Sie Wiederherstellen aus.

  12. Wählen Sie die Datei mit starkem Namen (Dateierweiterung .snk) aus, welche die Sicherungskopie des symmetrischen Schlüssel enthält, der zum Entschlüsseln gespeicherter Anmeldeinformationen und Verbindungsinformationen in der Berichtsserver-Datenbank verwendet wird.

  13. Geben Sie das Kennwort ein und wählen Sie OK aus.

  14. Wählen Sie dieWebportal-URL aus.

  15. Wählen Sie den Link aus, um das Webportal zu öffnen. Daraufhin sollten die Berichtsserver-Elemente aus der Berichtsserver-Datenbank angezeigt werden.

Erstellen der Rolle RSExecRole und der Berechtigungen mit T-SQL

Mit dem folgenden T-SQL-Skript in Systemdatenbanken können Sie auch die Rolle erstellen und die entsprechenden Berechtigungen gewähren:

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