Creare RSExecRole

Reporting Services usa un ruolo del database predefinito denominato RSExecRole che consente di concedere autorizzazioni del server di report al database corrispondente. Il ruolo RSExecRole viene creato automaticamente con il database del server di report. Si consiglia di non modificare mai né di assegnare utenti a tale ruolo. Quando si sposta un database del server di report in un motore di database di SQL Server nuovo o diverso, è necessario tuttavia creare nuovamente il ruolo nei database di sistema master e msdb.

Utilizzando le istruzioni indicate di seguito, effettuare le operazioni seguenti:

  • Creazione ed esecuzione del provisioning di RSExecRole nel database di sistema master.

  • Creazione ed esecuzione del provisioning di RSExecRole nel database di sistema MSDB.

Nota

Le istruzioni contenute in questo argomento sono destinate agli utenti che non desiderano eseguire uno script o scrivere codice WMI per effettuare il provisioning del database del server di report. Se si gestisce una distribuzione di dimensioni elevate e i database verranno spostati regolarmente, è consigliabile scrivere uno script per automatizzare questi passaggi. Per altre informazioni, vedere Accedere al provider WMI per Reporting Services.

Prima di iniziare

  • Eseguire il backup delle chiavi di crittografia in modo che sia possibile ripristinarle dopo che il database è stato spostato. Questo passaggio non influisce direttamente sulla possibilità di creare e di effettuare il provisioning di RSExecRole, ma è necessario disporre di una copia di backup delle chiavi per verificare il proprio lavoro. Per altre informazioni, vedere Eseguire il backup e il ripristino delle chiavi di crittografia di Reporting Services.

  • Verificare di avere eseguito l'accesso con un account utente che dispone delle autorizzazioni sysadmin sull'istanza di SQL Server.

  • Verificare che il servizio SQL Server Agent sia installato e che sia in esecuzione nell'istanza del motore di database che si intende usare.

  • Collegare i database ReportServerTempDB e ReportServer. Non è necessario collegare i database per creare il ruolo effettivo, ma è necessario che siano collegati prima che sia possibile eseguire il test del proprio lavoro.

Le istruzioni per la creazione manuale di RSExecRole devono essere utilizzate nel contesto dell'esecuzione della migrazione di un'installazione del server di report. Attività importanti come l'esecuzione del backup e lo spostamento del database del server di report non vengono descritte in questo articolo, ma nella documentazione del Motore di database.

Creare RSExecRole nel database master

Reporting Services usa stored procedure estese per consentire al servizio SQL Server Agent di supportare operazioni pianificate. I passaggi seguenti illustrano come concedere autorizzazioni di esecuzione per le procedure al ruolo RSExecRole .

Creazione di RSExecRole nel database di sistema master mediante Management Studio

  1. Avviare SQL Server Management Studio e connettersi all'istanza del motore di database che ospita il database del server di report.

  2. Aprire Database.

  3. Aprire Database di sistema.

  4. Aprire Master.

  5. Aprire Sicurezza.

  6. Aprire Ruoli.

  7. Fare clic con il pulsante destro del mouse su Ruoli del database, quindi scegliere Nuovo ruolo database. Verrà visualizzata la pagina Ruolo del database - Nuovo.

  8. Nel campo Nome ruolo immettere RSExecRole.

  9. Alla voce Proprietario, immettere dbo.

  10. Selezionare la pagina Entità a protezione diretta.

  11. Seleziona Cerca. Verrà visualizzata la finestra di dialogo Aggiungi oggetti . L'opzione Specifica oggetti è selezionata per impostazione predefinita.

  12. Seleziona OK. Verrà visualizzata la finestra di dialogo Seleziona oggetti .

  13. Selezionare Tipi di oggetti.

  14. Selezionare Stored procedure estese.

  15. Seleziona OK.

  16. Selezionare Sfoglia.

  17. Scorrere l'elenco e selezionare le procedure seguenti:

    1. xp_sqlagent_enum_jobs

    2. xp_sqlagent_is_starting

    3. xp_sqlagent_notify

  18. Selezionare OK e di nuovo OK.

  19. Nella colonna Concedi della riga Esegui selezionare la casella di controllo.

  20. Ripetere il passaggio per ognuna delle stored procedure rimanenti. ARSExecRole devono essere concesse le autorizzazioni di esecuzione per tutte le tre stored procedure.

  21. Al termine selezionare OK.

Screenshot that shows the Database Role Properties page.

Creazione di RSExecRole nel database MSDB

Per supportare operazioni pianificate, in Reporting Services vengono utilizzate le stored procedure per il servizio SQL Server Agent e le informazioni sul processo vengono recuperate dalle tabelle di sistema. I passaggi seguenti illustrano come concedere autorizzazioni di esecuzione per le procedure e autorizzazioni di selezione sulle tabelle a RSExecRole.

Creazione di RSExecRole nel database di sistema MSDB

  1. Ripetere passaggi analoghi per concedere le autorizzazioni alle stored procedure e alle tabelle nel database MSDB. Per semplificare i passaggi, il provisioning delle stored procedure e delle tabelle viene effettuato separatamente.

  2. Aprire MSDB.

  3. Aprire Sicurezza.

  4. Aprire Ruoli.

  5. Fare clic con il pulsante destro del mouse su Ruoli del database, quindi scegliere Nuovo ruolo database. Verrà visualizzata la pagina Generale.

  6. Nel campo Nome ruolo, immettere RSExecRole.

  7. Alla voce Proprietario, immettere dbo.

  8. Selezionare la pagina Entità a protezione diretta.

  9. Seleziona Cerca. Verrà visualizzata la finestra di dialogo Aggiungi oggetti . L'opzione Specifica oggetti è selezionata per impostazione predefinita.

  10. Seleziona OK.

  11. Selezionare Tipi di oggetti.

  12. Selezionare Stored procedure.

  13. Seleziona OK.

  14. Selezionare Sfoglia.

  15. Scorrere l'elenco di voci e selezionare le seguenti stored procedure:

    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. Selezionare OK, quindi selezionare di nuovo OK.

  17. Selezionare la prima stored procedure, ovvero sp_add_category.

  18. Nella colonna Concedi della riga Esegui, selezionare la casella di controllo.

  19. Ripetere il passaggio per ognuna delle stored procedure rimanenti. A RSExecRole devono essere concesse le autorizzazioni di esecuzione per tutte le 10 stored procedure.

  20. Nella pagina Entità a protezione diretta, selezionare di nuovo Cerca. Verrà visualizzata la finestra di dialogo Aggiungi oggetti . L'opzione Specifica oggetti è selezionata per impostazione predefinita.

  21. Seleziona OK.

  22. Selezionare Tipi di oggetti.

  23. Selezionare Tabelle.

  24. Seleziona OK.

  25. Selezionare Sfoglia.

  26. Scorrere l'elenco degli elementi e selezionare le tabelle seguenti:

    1. syscategories

    2. sysjobs

  27. Selezionare OK e di nuovo OK.

  28. Selezionare la prima tabella, ovvero syscategories.

  29. Nella colonna Concedi della riga Seleziona selezionare la casella di controllo.

  30. Ripetere il passaggio per la tabella sysjobs. A RSExecRole devono essere concesse le autorizzazioni di selezione per entrambe le tabelle.

  31. Al termine selezionare OK.

Spostamento del database del server di report

Dopo avere creato i ruoli, è possibile spostare il database del server di report in una nuova istanza di SQL Server. Per altre informazioni, vedere Spostamento di database del server di report a un altro computer.

L'aggiornamento del motore di database a SQL Server 2016 o versione successiva può essere eseguito prima o dopo lo spostamento del database.

Il database del server di report viene aggiornato automaticamente quando il server di report si connette al database stesso. Non sono necessari passaggi specifici per aggiornare il database.

Ripristinare le chiavi di crittografia e verificare il lavoro

Se i database del server di report sono stati collegati, è possibile completare i passaggi seguenti per verificare il lavoro.

Per verificare il funzionamento del server di report dopo uno spostamento del database

  1. Avviare lo strumento di configurazione di Reporting Services e connettersi al server di report.

  2. Selezionare Database.

  3. Selezionare Cambia database.

  4. Selezionare Scegli un database del server di report esistente.

  5. Immettere il nome del server del Motore di database. Se i database del server di report sono stati collegati a un'istanza denominata, è necessario immettere il nome dell'istanza nel formato <nomeserver>\<nomeistanza>.

  6. Selezionare Test connessione. Verrà visualizzata una finestra di dialogo che indica "Test della connessione riuscito".

  7. Selezionare OK per chiudere la finestra di dialogo e quindi selezionare Avanti.

  8. In Database selezionare il database del server di report.

  9. Selezionare Avanti e completare la procedura guidata.

  10. Selezionare Chiavi di crittografia.

  11. Selezionare Ripristina.

  12. Selezionare il file con nome sicuro (con estensione snk) in cui è presente la copia di backup della chiave simmetrica utilizzata per decrittografare le credenziali e le informazioni di connessione archiviate nel database del server di report.

  13. Immettere la password e selezionare OK.

  14. Selezionare URL portale Web.

  15. Selezionare il collegamento per aprire il portale Web. Gli elementi del server di report dovrebbero essere visualizzati dal database del server di report.

Creazione del ruolo RSExecRole e delle autorizzazioni relative usando T-SQL

È anche possibile creare il ruolo e concedere le autorizzazioni relative sui database di sistema usando lo script T-SQL seguente:

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

Spostamento di database del server di report in un altro computer (modalità nativa SSRS)
Creazione di un database del server di report in modalità nativa (Configuration Manager server di report)
Configuration Manager server di report (modalità nativa)
Eseguire il backup e il ripristino delle chiavi di crittografia di Reporting Services

Altre domande? Visitare il forum su Reporting Services