Spostare database del server di report in un altro computer (modalità nativa SSRS)

È possibile spostare i database del server di report usati in un'installazione del motore di database di SQL Server in un'istanza di un computer diverso. I database reportserver e reportservertempdb devono essere spostati o copiati insieme. Un'installazione di Reporting Services richiede entrambi i database. È necessario correlare il database reportservertempdb in base al nome del database primario reportserver in corso di spostamento.

Si applica a: SQL Server Reporting Services (modalità nativa).

Lo spostamento di un database non influisce sulle operazioni pianificate attualmente definite per gli elementi del server di report.

  • Le pianificazioni vengono ricreate la prima volta che si riavvia il servizio del server di report.

  • In SQL Server Agent i processi usati per attivare una pianificazione vengono ricreati nella nuova istanza di database. Non è necessario spostare i processi nel nuovo computer, ma è necessario eliminare quelli che non vengono più utilizzati.

  • Le sottoscrizioni, gli snapshot e i report memorizzati nella cache vengono mantenuti nel database spostato. Se uno snapshot non rileva i dati aggiornati dopo lo spostamento del database, deselezionare le opzioni dello snapshot. Selezionare quindi Applica per salvare le modifiche, ricreare la pianificazione e selezionare di nuovo Applica per salvare le modifiche.

  • Il report temporaneo e i dati della sessione utente archiviati nel database reportservertempdb vengono mantenuti quando si sposta il database.

SQL Server offre diversi approcci per spostare i database, tra cui backup e ripristino, collegamento e scollegamento e copia. Non tutti gli approcci sono appropriati per spostare un database esistente in una nuova istanza del server. L'approccio da utilizzare per spostare il database del server di report dipende dai requisiti di disponibilità del sistema. Il modo più semplice per spostare i database del server di report consiste nel collegarli e scollegarli. Questo approccio richiede tuttavia di portare in modalità offline il server di report mentre lo si scollega. Le azioni di backup e ripristino rappresentano un'opzione migliore se si desidera ridurre al minimo le interruzioni del servizio, ma per eseguire queste operazioni è necessario usare i comandi Transact-SQL. La copia del database non è consigliata, in particolare tramite la procedura guidata di copia del database. Non mantiene le impostazioni delle autorizzazioni nel database.

Importante

È consigliabile eseguire la procedura descritta in questo articolo quando lo spostamento del database del server di report è l'unica modifica che si intende apportare all'installazione esistente. La migrazione di un'intera installazione di Reporting Services richiede la riconfigurazione della connessione e la reimpostazione della chiave di crittografia. Ad esempio, questa configurazione è necessaria quando si sposta il database e si modifica l'identità del servizio Windows ReportServer che usa il database.

Scollegamento e collegamento dei database del server di report

Se il server di report può essere portato offline, è possibile scollegare i database per spostarli nell'istanza di SQL Server da usare. In questo modo, è possibile mantenere le autorizzazioni presenti nei database. Se si usa un database SQL Server, è necessario spostarlo in un'altra istanza di SQL Server. Dopo avere spostato i database, è necessario riconfigurare la connessione del server di report al database del server di report. Se si sta eseguendo una distribuzione con scalabilità orizzontale, è necessario riconfigurare la connessione al database del server di report per ogni server di report della distribuzione.

Per spostare i database, eseguire la procedura seguente:

  1. Eseguire il backup delle chiavi di crittografia per il database del server di report da spostare. Per eseguire il backup delle chiavi, è possibile usare lo strumento di configurazione di Reporting Services.

  2. Arrestare il servizio del server di report. Per arrestare il servizio, è possibile usare lo strumento di configurazione di Reporting Services.

  3. Avviare SQL Server Management Studio e aprire una connessione all'istanza di SQL Server che ospita i database del server di report.

  4. Fare clic con il pulsante destro del mouse sul database del server di report, scegliere Attività, quindi Scollega. Ripetere il passaggio per il database temporaneo del server di report.

  5. Copiare o spostare i file con estensione mdf e ldf nella cartella Dati dell'istanza di SQL Server da usare. Poiché si stanno spostando due database, verificare di spostare o copiare tutti e quattro i file.

  6. In Management Studio aprire una connessione alla nuova istanza di SQL Server che ospita i database del server di report.

  7. Fare clic con il pulsante destro del mouse sul nodo Database, quindi scegliere Collega.

  8. Selezionare Aggiungi per selezionare i file con estensione mdf e ldf del database del server di report che si desidera collegare. Ripetere il passaggio per il database temporaneo del server di report.

  9. Dopo avere collegato i database, verificare che RSExecRole sia un ruolo del database nel database del server di report e nel database temporaneo. Il ruoloRSExecRole deve disporre delle autorizzazioni di selezione, inserimento, aggiornamento, eliminazione e riferimento nelle tabelle del database del server di report e delle autorizzazioni di esecuzione nelle stored procedure. Per altre informazioni, vedere Creare RSExecRole.

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

  11. Nella pagina Database selezionare la nuova istanza di SQL Server e selezionare Connetti.

  12. Selezionare il database del server di report appena spostato, quindi selezionare Applica.

  13. Nella pagina Chiavi di crittografia fare clic su Ripristina. Specificare il file che contiene la copia di backup delle chiavi e la password per sbloccare il file.

  14. Riavviare il servizio del server di report.

Backup e ripristino dei database del server di report

Se il server di report non può essere portato in modalità offline, è possibile rilocare i database del server di report tramite backup e ripristino. Per eseguire queste due operazioni, è necessario usare le istruzioni Transact-SQL. Dopo aver ripristinato i database, è necessario configurare il server di report per utilizzare il database nella nuova istanza del server. Per ulteriori informazioni, vedere le istruzioni alla fine di questo articolo.

Utilizzo di BACKUP e COPY_ONLY per eseguire il backup dei database del server di report

Quando si esegue il backup dei database, impostare l'argomento COPY_ONLY. Accertarsi di eseguire il backup di entrambi i database e dei file di log.

-- To permit log backups, before the full database backup, alter the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE ReportServer  
   SET RECOVERY FULL  
  
-- If the ReportServerData device does not exist yet, create it.   
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerData',   
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\BACKUP\ReportServerData.bak'  
  
-- Create a logical backup device, ReportServerLog.  
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerLog',   
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\BACKUP\ReportServerLog.bak'  
  
-- Back up the full ReportServer database.  
BACKUP DATABASE ReportServer  
   TO ReportServerData  
   WITH COPY_ONLY  
  
-- Back up the ReportServer log.  
BACKUP LOG ReportServer  
   TO ReportServerLog  
   WITH COPY_ONLY  
  
-- To permit log backups, before the full database backup, alter the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE ReportServerTempdb  
   SET RECOVERY FULL  
  
-- If the ReportServerTempDBData device does not exist yet, create it.   
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',   
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBData.bak'  
  
-- Create a logical backup device, ReportServerTempDBLog.  
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',   
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBLog.bak'  
  
-- Back up the full ReportServerTempDB database.  
BACKUP DATABASE ReportServerTempDB  
   TO ReportServerTempDBData  
   WITH COPY_ONLY  
  
-- Back up the ReportServerTempDB log.  
BACKUP LOG ReportServerTempDB  
   TO ReportServerTempDBLog  
   WITH COPY_ONLY  

Utilizzare RESTORE e MOVE per spostare i database del server di report

Quando si ripristinano i database, accertarsi di includere l'argomento MOVE per poter specificare un percorso. Utilizzare l'argomento NORECOVERY per eseguire il ripristino iniziale. Utilizzando questo argomento, il database viene mantenuto in uno stato RESTORING, consentendo di analizzare i backup dei log per determinare quali ripristinare. Nel passaggio finale l'operazione RESTORE viene ripetuta con l'argomento RECOVERY.

Per l'argomento MOVE viene utilizzato il nome logico del file di dati. Per individuare il nome logico, eseguire l'istruzione RESTORE FILELISTONLY FROM DISK='C:\ReportServerData.bak';.

Negli esempi seguenti viene incluso l'argomento FILE in modo che sia possibile specificare la posizione del file di log da ripristinare. Per individuare la posizione del file, eseguire l'istruzione RESTORE HEADERONLY FROM DISK='C:\ReportServerData.bak';.

Durante il ripristino del database e dei file di log, eseguire ogni operazione RESTORE separatamente.

-- Restore the report server database and move to new instance folder   
RESTORE DATABASE ReportServer  
   FROM DISK='C:\ReportServerData.bak'  
   WITH NORECOVERY,   
      MOVE 'ReportServer' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',   
      MOVE 'ReportServer_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';  
GO  
  
-- Restore the report server log file to new instance folder   
RESTORE LOG ReportServer  
   FROM DISK='C:\ReportServerData.bak'  
   WITH NORECOVERY, FILE=2  
      MOVE 'ReportServer' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',   
      MOVE 'ReportServer_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';  
GO  
  
-- Restore and move the report server temporary database  
RESTORE DATABASE ReportServerTempdb  
   FROM DISK='C:\ReportServerTempDBData.bak'  
   WITH NORECOVERY,   
      MOVE 'ReportServerTempDB' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',   
      MOVE 'ReportServerTempDB_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';  
GO  
  
-- Restore the temporary database log file to new instance folder   
RESTORE LOG ReportServerTempdb  
   FROM DISK='C:\ReportServerTempDBData.bak'  
   WITH NORECOVERY, FILE=2  
      MOVE 'ReportServerTempDB' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',   
      MOVE 'ReportServerTempDB_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';  
GO  
  
-- Perform final restore  
RESTORE DATABASE ReportServer  
   WITH RECOVERY  
GO  
  
-- Perform final restore  
RESTORE DATABASE ReportServerTempDB  
   WITH RECOVERY  
GO  

Come configurare la connessione al database del server di report

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

  2. Nella pagina Database selezionare Cambia database. Scegliere Avanti.

  3. Selezionare Scegli un database del server di report esistente. Scegliere Avanti.

  4. Selezionare l'istanza di SQL Server che ospita attualmente il database del server di report, quindi selezionare Test connessione. Selezionare Avanti.

  5. In Nome database selezionare il database del server di report da utilizzare. Selezionare Avanti.

  6. In Credenziali specificare le credenziali che il server di report utilizza per la connessione al database relativo. Selezionare Avanti.

  7. Selezionare Avanti e quindi Fine.

Nota

Un'installazione di Reporting Services richiede che l'istanza del motore di database di SQL Server includa il ruolo RSExecRole. Quando si imposta la connessione al database del server di report tramite lo strumento di configurazione di Reporting Services, vengono eseguite le operazioni di creazione dei ruoli, registrazione dell'account di accesso e assegnazione di ruoli. Se per configurare la connessione si utilizzano approcci alternativi, in particolare l'utilità della riga di comando rsconfig.exe, il server di report non si troverà in uno stato attivo. Per renderlo disponibile il server di report, potrebbe essere necessario scrivere codice WMI. Per altre informazioni, vedere Accedere al provider WMI per Reporting Services.

Creare RSExecRole
Avviare e arrestare il servizio del server di report
Configurare una connessione del database del server di report
Configurare l'account di esecuzione automatica
Gestione configurazione del server di report
Utilità rsconfig
Configurare e gestire le chiavi di crittografia
Database del server di report:

Altre domande? Visitare il forum su Reporting Services