Amministrazione del database del server di report

In una distribuzione di Reporting Services vengono utilizzati due database relazionali di SQL Server per l'archiviazione interna. Per impostazione predefinita, i database sono denominati ReportServer e ReportServerTempdb. ReportServerTempdb viene creato con il database primario del server di report e viene utilizzato per l'archiviazione di dati temporanei, informazioni sulla sessione e report memorizzati nella cache.

In Reporting Services l'amministrazione del database include le attività di backup e ripristino dei database del server di report e la gestione delle chiavi di crittografia utilizzate per crittografare e decrittografare i dati sensibili.

In SQL Server sono disponibili vari strumenti per l'amministrazione dei database del server di report.

  • Per eseguire il backup o il ripristino del database del server di report, per spostare un database del server di report o per recuperare un database del server di report, è possibile utilizzare SQL Server Management Studio, i comandi Transact-SQL o le utilità della riga di comando del database. Per istruzioni, vedere Spostamento di database del server di report in un altro computer nella documentazione online di SQL Server.

  • Per copiare il contenuto del database esistente in un altro database del server di report, è possibile collegare una copia di un database del server di report e utilizzarla con una diversa istanza del server di report. In alternativa è possibile creare ed eseguire uno script che utilizza le chiamate SOAP per ricreare il contenuto del server di report in un nuovo database. È possibile utilizzare l'utilità rs per eseguire lo script.

  • Per gestire le connessioni tra il server di report e il database del server di report e per individuare il database utilizzato per una particolare istanza del server di report, è possibile utilizzare la pagina Impostazioni database dello strumento di configurazione Reporting Services. Per ulteriori informazioni sulla connessione del server di report al database del server di report, vedere Configurazione della connessione a un database del server di report.

Autorizzazioni per l'accesso a SQL Server e per il database

I database del server di report vengono utilizzati internamente dal server di report. Le connessioni al database vengono eseguite dal servizio del server di report. È possibile utilizzare lo strumento di configurazione di Reporting Services per configurare una connessione al database del server di report.

Le credenziali per la connessione del server di report al database possono essere l'account del servizio, un account utente locale o di dominio Windows o un utente del database di SQL Server. Per stabilire una connessione, è necessario scegliere un account esistente poiché in Reporting Services gli account non vengono creati.

Un account di SQL Server per l'accesso al database del server di report viene creato automaticamente per l'account specificato.

Anche le autorizzazioni al database vengono configurate automaticamente. Lo strumento di configurazione di Reporting Services assegnerà l'account o l'utente del database ai ruoli Public e RSExecRole per i database del server di report. Il ruolo RSExecRole offre autorizzazioni di accesso alle tabelle di database e di esecuzione di stored procedure. Il ruolo RSExecRole viene creato nei database master e msdb quando si crea il database del server di report. Il ruolo RSExecRole è un membro del ruolo db_owner per i database del server di report e consente al server di report di aggiornare lo schema per supportare un processo di aggiornamento automatico.

Convenzioni di denominazione per i database del server di report

Il nome del database primario deve essere conforme alle regole relative agli Identificatori. Per il database temporaneo viene sempre utilizzato il nome del database primario del server di report, con il suffisso Tempdb. Non è possibile scegliere un nome diverso per il database temporaneo.

La ridenominazione di un database del server di report non è supportata, in quanto i database del server di report sono considerati componenti interni. La ridenominazione dei database del server di report genera errori. In particolare, se si rinomina il database primario, verrà visualizzato un messaggio di errore che indica che i nomi dei database non sono sincronizzati. Se si rinomina il database ReportServerTempdb, durante la successiva esecuzione di report verrà generato l'errore interno seguente:

"Errore interno nel server di report. Per ulteriori informazioni, vedere il registro errori. (rsInternalError)

Il nome di oggetto 'ReportServerTempDB.dbo.PersistedStream' non è valido."

Questo errore si verifica perché il nome ReportServerTempdb viene archiviato internamente e viene utilizzato dalle stored procedure per l'esecuzione di operazioni interne. Rinominare il database temporaneo impedisce pertanto il corretto funzionamento delle stored procedure.

Attivazione dell'isolamento dello snapshot nel database del server di report

Nel database del server di report non è possibile attivare l'isolamento dello snapshot. Se l'isolamento dello snapshot è attivato, verrà visualizzato l'errore seguente: "Il report selezionato non è pronto per la visualizzazione. Il rendering del report è ancora in corso oppure non è disponibile uno snapshot del report".

Se non si attiva intenzionalmente l'isolamento dello snapshot, è probabile che l'attributo sia stato impostato da un'altra applicazione o che per il database modello sia stato attivato l'isolamento dello snapshot, facendo in modo che tutti i nuovi database ereditino l'impostazione.

Per disattivare l'isolamento dello snapshot sul il database del server di report, avviare Management Studio, aprire una nuova finestra della query, incollare, quindi eseguire lo script seguente:

ALTER DATABASE ReportServer
SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE ReportServerTempdb
SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE ReportServer
SET READ_COMMITTED_SNAPSHOT OFF
ALTER DATABASE ReportServerTempDb
SET READ_COMMITTED_SNAPSHOT OFF

Informazioni sulle versioni del database

In Reporting Services non sono disponibili informazioni esplicite sulla versione del database. Tuttavia, poiché le versioni del database sono sempre sincronizzate con le versioni del prodotto, è possibile utilizzare le informazioni relative alla versione del prodotto per stabilire quando la versione del database è stata modificata. Le informazioni sulla versione del prodotto per Reporting Services sono disponibili tramite le informazioni sulla versione di file contenute nei file di log, nelle intestazioni delle chiamate SOAP e quando ci si connette all'URL del server di report (ad esempio, quando si apre un browser su https://localhost/reportserver). Per ulteriori informazioni, vedere Procedura: Rilevamento delle informazioni sulla versione (Reporting Services).