Condividi tramite


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

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

È possibile spostare i database del server di report usati in un'installazione di SQL Server in un'istanza di in un computer diverso.

SQL Server offre diversi approcci per lo spostamento di database:

  • Scollegare e collegare. Questo approccio offre il modo più semplice per spostare i database del server di report, ma è necessario disconnettere il server di report mentre i database vengono scollegati.
  • Backup e ripristino. Questo approccio riduce al minimo le interruzioni del servizio, ma è necessario eseguire comandi Transact-SQL (T-SQL) per eseguire le operazioni.
  • Copia. La copia del database non è consigliata se si utilizza la Copia guidata database. Non mantiene le impostazioni delle autorizzazioni nel database.

Questo articolo illustra come usare l'approccio di scollegamento e collegamento e l'approccio di backup e ripristino.

Prerequisiti

  • Server di report in modalità nativa configurato usato in un'installazione di SQL Server.
  • Istanza di SQL Server in un computer diverso.

Preparare lo spostamento dei database

Quando si spostano i database del server di report, tenere presente quanto segue:

  • È necessario spostare o copiare insieme i database reportserver e reportservertempdb . Un'installazione di SSRS richiede entrambi i database.
  • Il nome del database temporaneo deve corrispondere al nome del database del server di report primario, ma con un suffisso tempdb .
  • 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.
    • I processi di SQL Server Agent usati per attivare una pianificazione vengono ricreati nella nuova istanza del database. Non è necessario spostare i processi nel nuovo computer, ma è possibile eliminare i processi che non vengono più usati nel computer corrente.
    • Le sottoscrizioni, gli snapshot e i report memorizzati nella cache vengono mantenuti nel database spostato. Se uno snapshot non preleva 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.
    • I dati temporanei del report e della sessione utente archiviati nel database temporaneo vengono mantenuti quando si sposta tale database.

Importante

I passaggi descritti in questo articolo sono consigliati quando la rilocazione del database del server di report è l'unica modifica apportata all'installazione esistente. Quando si esegue la migrazione di un'intera installazione di SSRS, è necessario riconfigurare la connessione e reimpostare le chiavi di crittografia. Ad esempio, questi passaggi sono necessari quando si sposta il database e si modifica l'identità del servizio Windows del server di report che usa il database.

Scollegamento e collegamento dei database del server di report

Se è possibile portare offline il server di report, è possibile usare l'approccio di scollegamento e collegamento. In particolare, scollegare i database dall'istanza di SQL Server corrente. Quindi, spostarli e collegarli all'istanza che si vuole usare. In questo modo, è possibile mantenere le autorizzazioni presenti nei database.

Dopo avere spostato i database, è necessario riconfigurare la connessione del server di report al database del server di report. Se si esegue una distribuzione con scalabilità orizzontale, è necessario riconfigurare la connessione al database del server di report per ogni server di report nella distribuzione.

Per usare l'approccio di scollegamento e collegamento, seguire questa procedura nelle sezioni seguenti.

Scollegare i database

  1. Aprire Gestione configurazione server di report.

  2. Utilizzare la pagina Chiavi di crittografia per eseguire il backup delle chiavi di crittografia per il database del server di report da spostare.

  3. Utilizzare la pagina Stato del server di report per arrestare il servizio del server di report.

  4. Aprire SQL Server Management Studio e connettersi all'istanza di SQL Server che ospita i database del server di report.

  5. Fare clic con il pulsante destro del mouse sul database del server di report, selezionare Attività e quindi scollegare. Ripetere il passaggio per il database temporaneo del server di report.

Collegare i database

  1. Trovare i file .mdf e ldf per l'istanza di SQL Server corrente. Si trovano nella cartella Dati.

    Screenshot di Esplora file. Nella cartella Dati i file .mdf e ldf sono evidenziati per il database del server di report e per il database temporaneo.

  2. Copiare o spostare i file .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.

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

  4. Fare clic con il pulsante destro del mouse sul nodo Database e quindi scegliere Collega.

  5. 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.

Completare la configurazione

  1. Verificare che i database collegati abbiano il ruolo RSExecRole . È necessario configurare RSExecRole per le autorizzazioni select, insert, update, delete e reference per le tabelle di database del server di report ed eseguire le autorizzazioni per le stored procedure. Per altre informazioni, vedere Creare RSExecRole.

  2. Avviare Gestione configurazione server di report e aprire una connessione al server di report.

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

  4. Selezionare il database del server di report appena spostato e quindi selezionare Applica.

  5. 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.

  6. Riavviare il servizio del server di report.

Backup e ripristino dei database del server di report

Se non è possibile portare offline il server di report, è possibile usare l'approccio di backup e ripristino per rilocare i database del server di report. Con questo approccio, è necessario usare istruzioni T-SQL.

I passaggi descritti nelle sezioni seguenti illustrano come eseguire il backup e il ripristino dei database e come configurare il server di report per l'utilizzo dei database nella nuova istanza del server.

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

Per eseguire il backup dei database, aprire SQL Server Management Studio e quindi eseguire le istruzioni seguenti in una finestra di query. Queste istruzioni usano l'argomento COPY_ONLY e e esegono il backup di database e file di log.

Prima di eseguire queste istruzioni, sostituire il <segnaposto path-to-backup-folder> con il percorso della cartella Backup dell'istanza corrente, ad esempio C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP.

-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServer
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServer
TO DISK = '<path-to-backup-folder>\ReportServerExtraBackup.bak'
GO

-- If the ReportServerData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerData',
'<path-to-backup-folder>\ReportServerData.bak'

-- Create a logical backup device, ReportServerLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerLog',
'<path-to-backup-folder>\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, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServerTempdb
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServerTempdb
TO DISK = '<path-to-backup-folder>\ReportServerTempdbExtraBackup.bak'
GO

-- If the ReportServerTempDBData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',
'<path-to-backup-folder>\ReportServerTempDBData.bak'

-- Create a logical backup device, ReportServerTempDBLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',
'<path-to-backup-folder>\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

Per ripristinare i database, aprire SQL Server Management Studio e quindi eseguire le istruzioni seguenti in una finestra di query.

In queste istruzioni:

  • Le RESTORE operazioni per il database e i file di log vengono eseguite separatamente.

  • L'argomento MOVE consente di specificare un percorso. Questo argomento usa il nome logico del file di dati. Per trovare il nome logico, eseguire l'istruzione seguente. Sostituire innanzitutto il <segnaposto path-to-report-server-database-backup-file> con il percorso del file di backup del database del server di report, ad esempio C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

    RESTORE FILELISTONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    È possibile trovare il nome logico nella colonna LogicalName dell'output.

    Screenshot di un'istruzione RESTORE FILELISTONLY in una finestra di query di SQL Server Management Studio. Nell'output la colonna LogicalName è evidenziata.

    È possibile eseguire un'istruzione simile per trovare il nome logico del database temporaneo:

    RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • L'argomento FILE consente di specificare la posizione del file di log da ripristinare. Per trovare la posizione del file, eseguire l'istruzione seguente. Sostituire innanzitutto il <segnaposto path-to-report-server-database-backup-file> con il percorso del file di backup del database del server di report, ad esempio C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

    RESTORE HEADERONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    È possibile trovare la posizione del file nella colonna Posizione dell'output.

    Screenshot di un'istruzione RESTORE HEADERONLY in una finestra di query di SQL Server Management Studio. Nell'output la colonna Position è evidenziata.

    È possibile eseguire un'istruzione simile per trovare la posizione del file del database temporaneo:

    RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • L'argomento NORECOVERY esegue il ripristino iniziale. Questo argomento mantiene il database in uno RESTORING stato, che consente di esaminare i backup del log per determinare quale eseguire il ripristino.

  • Nel passaggio finale l'operazione RESTORE viene ripetuta con l'argomento RECOVERY.

Prima di eseguire queste istruzioni, sostituire i segnaposto seguenti con i valori appropriati:

Segnaposto Descrizione Esempio
<path-to-backup-folder> Percorso della cartella Backup dell'istanza corrente C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
<path-to-new-data-folder> Percorso della cartella Dati della nuova istanza C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA
<report-server-database-logical-name> Nome logico del database del server di report ReportServer
<report-server-database-log-logical-name> Nome logico del log del database del server di report ReportServer_log
<report-server-database-log-file-position> Posizione del file del file di log del database del server di report 2
<temporary-database-logical-name> Nome logico del database temporaneo ReportServerTempDB
<temporary-database-log-logical-name> Nome logico del log temporaneo del database ReportServerTempDB_log
<temporary-database-log-file-position> Posizione del file di log del database temporaneo 2
-- Restore the report server database and move it to the new instance folder.
RESTORE DATABASE ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore the report server log file to the new instance folder.
RESTORE LOG ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY, FILE=<report-server-database-log-file-position>,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore and move the report server temporary database.
RESTORE DATABASE ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Restore the temporary database log file to the new instance folder.
RESTORE LOG ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY, FILE=<temporary-database-log-file-position>,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Perform the final restore operation on the report database.
RESTORE DATABASE ReportServer
   WITH RECOVERY
GO

-- Perform the final restore operation on the temporary database.
RESTORE DATABASE ReportServerTempDB
   WITH RECOVERY
GO

Configurare la connessione al database del server di report

  1. Avviare Gestione configurazione server di report e aprire una connessione al server di report.

  2. Nella pagina Database selezionare Cambia database.

  3. Nella pagina Modifica database selezionare Scegliere un database del server di report esistente e quindi selezionare Avanti.

  4. In Nome server immettere l'istanza di SQL Server che ora ospita il database del server di report e quindi selezionare Test connessione.

  5. Dopo aver testato la connessione, selezionare Avanti.

  6. Per Database del server di report selezionare il database del server di report che si desidera usare e quindi selezionare Avanti.

  7. In Credenziali specificare le credenziali usate dal server di report per connettersi al database del server di report e quindi selezionare Avanti.

  8. Selezionare Avanti e quindi Fine.

Nota

In un'installazione di SSRS, l'istanza di SQL Server motore di database deve includere il ruolo RSExecRole. La creazione di ruoli, la registrazione dell'account di accesso e le assegnazioni di ruolo vengono eseguite quando si usa Gestione configurazione del server di report per impostare la connessione al database del server di report. Se si usano approcci alternativi, ad esempio l'utilità del prompt dei comandi rsconfig.exe, il server di report non è in uno stato di lavoro. In tal caso, potrebbe essere necessario scrivere codice WMI (Windows Management Instrumentation) per rendere disponibile il server di report. Per altre informazioni, vedere Accedere al provider WMI di Reporting Services.