Partage via


Déplacer des bases de données du serveur de rapports vers un autre ordinateur (mode natif SSRS)

S’applique à : mode natif SQL Server Reporting Services (SSRS)

Vous pouvez déplacer les bases de données du serveur de rapports que vous utilisez dans une installation de SQL Server vers une instance qui se trouve sur un autre ordinateur.

SQL Server fournit plusieurs approches pour déplacer des bases de données :

  • Détacher et attacher. Cette approche offre le moyen le plus simple de déplacer les bases de données du serveur de rapports, mais vous devez mettre le serveur de rapports hors connexion pendant que les bases de données sont détachées.
  • Sauvegarde et restauration. Cette approche réduit les interruptions de service, mais vous devez exécuter des commandes Transact-SQL (T-SQL) pour effectuer les opérations.
  • Copier. La copie de la base de données n’est pas recommandée si vous utilisez l’Assistant Copie de base de données. Il ne conserve pas les paramètres d'autorisation dans la base de données.

Cet article vous montre comment utiliser l’approche de détachement et d’attachement ainsi que l’approche de sauvegarde et de restauration.

Prérequis

  • Serveur de rapports en mode natif configuré utilisé dans une installation de SQL Server.
  • Instance de SQL Server sur un autre ordinateur.

Préparer le déplacement des bases de données

Gardez à l’esprit les points suivants lorsque vous déplacez des bases de données du serveur de rapports :

  • Vous devez déplacer ou copier les bases de données reportserver et reportservertempdb ensemble. Une installation de SSRS nécessite les deux bases de données.
  • Le nom de la base de données temporaire doit être identique au nom de la base de données du serveur de rapports principal, mais avec un suffixe tempdb .
  • Le déplacement d'une base de données ne modifie pas les opérations planifiées actuellement définies pour les éléments du serveur de rapports.
    • Les planifications sont recréations la première fois que vous redémarrez le service du serveur de rapports.
    • Les travaux de l’agent SQL Server utilisés pour déclencher une planification sont recréé sur la nouvelle instance de base de données. Vous n’avez pas besoin de déplacer les travaux vers le nouvel ordinateur, mais vous pouvez supprimer des travaux qui ne sont plus utilisés sur l’ordinateur actuel.
    • Les abonnements, les instantanés et les rapports mis en cache sont préservés dans la base de données déplacée. Si un instantané ne récupère pas de données actualisées après avoir déplacé la base de données, désactivez les options d’instantané. Sélectionnez Ensuite Appliquer pour enregistrer vos modifications, recréez la planification, puis sélectionnez Appliquer à nouveau pour enregistrer vos modifications.
    • Les données de session utilisateur et de rapport temporaire stockées dans la base de données temporaire persistent lorsque vous déplacez cette base de données.

Important

Les étapes décrites dans cet article sont recommandées lors du déplacement de la base de données du serveur de rapports est la seule modification que vous apportez à l’installation existante. Lorsque vous migrez une installation SSRS entière, vous devez reconfigurer la connexion et réinitialiser les clés de chiffrement. Par exemple, ces étapes sont requises lorsque vous déplacez la base de données et modifiez l’identité du service Windows du serveur de rapports qui utilise la base de données.

Détacher et attacher les bases de données du serveur de rapports

Si vous pouvez mettre le serveur de rapports hors connexion, vous pouvez utiliser l’approche de détachement et d’attachement. Plus précisément, vous détachez les bases de données de votre instance SQL Server actuelle. Ensuite, vous les déplacez et les attachez à l’instance que vous souhaitez utiliser. Cette approche permet de conserver les autorisations définies dans les bases de données.

Une fois que vous avez déplacé les bases de données, vous devez reconfigurer la connexion du serveur de rapports à la base de données du serveur de rapports. Si vous exécutez un déploiement avec montée en puissance parallèle, vous devez reconfigurer la connexion de base de données du serveur de rapports pour chaque serveur de rapports dans le déploiement.

Pour utiliser l’approche de détachement et d’attachement, suivez les étapes décrites dans les sections suivantes.

Détacher les bases de données

  1. Ouvrez le Gestionnaire de configuration du serveur de rapports.

  2. Utilisez la page Clés de chiffrement pour sauvegarder les clés de chiffrement de la base de données du serveur de rapports que vous souhaitez déplacer.

  3. Utilisez la page État du serveur de rapports pour arrêter le service du serveur de rapports.

  4. Ouvrez SQL Server Management Studio et connectez-vous à l’instance SQL Server qui héberge les bases de données du serveur de rapports.

  5. Cliquez avec le bouton droit sur la base de données du serveur de rapports, sélectionnez Tâches, puis détachez-le. Répétez cette étape pour chaque base de données temporaire du serveur de rapports.

Attacher les bases de données

  1. Recherchez les fichiers .mdf et .ldf pour votre instance SQL Server actuelle. Ils se trouvent dans le dossier Données.

    Capture d’écran de Explorateur de fichiers. Dans le dossier Données, les fichiers .mdf et .ldf sont mis en surbrillance pour la base de données du serveur de rapports et la base de données temporaire.

  2. Copiez ou déplacez les fichiers .mdf et .ldf vers le dossier Données de l’instance SQL Server que vous souhaitez utiliser. Dans la mesure où vous déplacez deux bases de données, veillez à déplacer ou à copier les quatre fichiers.

  3. Dans SQL Server Management Studio, ouvrez une connexion à la nouvelle instance SQL Server qui héberge les bases de données du serveur de rapports.

  4. Cliquez avec le bouton droit sur le nœud Bases de données , puis sélectionnez Attacher.

  5. Sélectionnez Ajouter pour sélectionner les fichiers .mdf et .ldf de base de données du serveur de rapports que vous souhaitez attacher. Répétez cette étape pour chaque base de données temporaire du serveur de rapports.

Effectuer la configuration

  1. Vérifiez que les bases de données que vous avez jointes ont le rôle RSExecRole . Vous devez configurer RSExecRole pour sélectionner, insérer, mettre à jour, supprimer et référencer des autorisations sur les tables de base de données du serveur de rapports et exécuter des autorisations sur les procédures stockées. Pour plus d’informations, consultez Créer le rôle RSExecRole.

  2. Démarrez le Gestionnaire de configuration du serveur de rapports et ouvrez une connexion au serveur de rapports.

  3. Sur la page Base de données, sélectionnez la nouvelle instance de SQL Server, puis sélectionnez Se connecter.

  4. Sélectionnez la base de données du serveur de rapports que vous venez de déplacer, puis sélectionnez Appliquer.

  5. Dans la page Clés de chiffrement, cliquez sur Restaurer. Spécifiez le fichier qui contient la copie de sauvegarde des clés, ainsi que le mot de passe qui déverrouille le fichier.

  6. Redémarrez le service du serveur de rapports.

Sauvegarder et restaurer les bases de données du serveur de rapports

Si vous ne pouvez pas mettre le serveur de rapports hors connexion, vous pouvez utiliser l’approche de sauvegarde et de restauration pour déplacer les bases de données du serveur de rapports. Avec cette approche, vous devez utiliser des instructions T-SQL.

Les étapes décrites dans les sections suivantes vous montrent comment sauvegarder et restaurer les bases de données et comment configurer le serveur de rapports pour utiliser les bases de données sur la nouvelle instance de serveur.

Utiliser les arguments BACKUP et COPY_ONLY pour sauvegarder les bases de données du serveur de rapports

Pour sauvegarder les bases de données, ouvrez SQL Server Management Studio, puis exécutez les instructions suivantes dans une fenêtre de requête. Ces instructions utilisent l’argument COPY_ONLY et sauvegardent les bases de données et les fichiers journaux.

Avant d’exécuter ces instructions, remplacez l’espace <réservé path-to-backup-folder> par le chemin d’accès au dossier de sauvegarde de votre instance actuelle, par exemple 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

Utiliser les arguments RESTORE et MOVE pour déplacer les bases de données du serveur de rapports

Pour restaurer les bases de données, ouvrez SQL Server Management Studio, puis exécutez les instructions suivantes dans une fenêtre de requête.

Dans ces instructions :

  • Les RESTORE opérations pour la base de données et les fichiers journaux s’exécutent séparément.

  • L’argument MOVE vous permet de spécifier un chemin d’accès. Cet argument utilise le nom logique du fichier de données. Pour rechercher le nom logique, exécutez l’instruction suivante. Remplacez d’abord l’espace <réservé path-to-report-server-database-backup-file> par le chemin d’accès à votre fichier de sauvegarde de base de données du serveur de rapports, par C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bakexemple .

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

    Vous trouverez le nom logique dans la colonne LogicalName de la sortie.

    Capture d’écran d’une instruction RESTORE FILELISTONLY dans une fenêtre de requête SQL Server Management Studio. Dans la sortie, la colonne LogicalName est mise en surbrillance.

    Vous pouvez exécuter une instruction similaire pour rechercher le nom logique de votre base de données temporaire :

    RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • L’argument FILE vous permet de spécifier la position du fichier journal à restaurer. Pour rechercher la position du fichier, exécutez l’instruction suivante. Remplacez d’abord l’espace <réservé path-to-report-server-database-backup-file> par le chemin d’accès à votre fichier de sauvegarde de base de données du serveur de rapports, par C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bakexemple .

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

    Vous trouverez la position du fichier dans la colonne Position de la sortie.

    Capture d’écran d’une instruction RESTORE HEADERONLY dans une fenêtre de requête SQL Server Management Studio. Dans la sortie, la colonne Position est mise en surbrillance.

    Vous pouvez exécuter une instruction similaire pour rechercher la position du fichier de votre base de données temporaire :

    RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • L’argument NORECOVERY effectue la restauration initiale. Cet argument conserve la base de données dans un RESTORING état, ce qui vous donne le temps de passer en revue les sauvegardes de journal pour déterminer celle à restaurer.

  • L'étape finale répète l'opération RESTORE avec l'argument RECOVERY.

Avant d’exécuter ces instructions, remplacez les espaces réservés suivants par les valeurs appropriées :

Espace réservé Description Exemple
<path-to-backup-folder> Chemin d’accès au dossier Sauvegarde de votre instance actuelle C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
<path-to-new-data-folder> Chemin d’accès au dossier Données de votre nouvelle instance C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA
<report-server-database-logical-name> Nom logique de votre base de données du serveur de rapports ReportServer
<report-server-database-log-logical-name> Nom logique du journal de votre base de données du serveur de rapports ReportServer_log
<report-server-database-log-file-position> Position du fichier journal de la base de données du serveur de rapports 2
<temporary-database-logical-name> Nom logique de votre base de données temporaire ReportServerTempDB
<temporary-database-log-logical-name> Nom logique de votre journal de base de données temporaire ReportServerTempDB_log
<temporary-database-log-file-position> Position du fichier journal de base de données temporaire 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

Configurer la connexion de base de données du serveur de rapports

  1. Démarrez le Gestionnaire de configuration du serveur de rapports et ouvrez une connexion au serveur de rapports.

  2. Dans la page Base de données, sélectionnez Modifier la base de données.

  3. Dans la page Modifier la base de données, sélectionnez Choisir une base de données de serveur de rapports existante, puis sélectionnez Suivant.

  4. Pour le nom du serveur, entrez l’instance SQL Server qui héberge désormais la base de données du serveur de rapports, puis sélectionnez Tester la connexion.

  5. Après avoir testé la connexion, sélectionnez Suivant.

  6. Pour la base de données du serveur de rapports, sélectionnez la base de données du serveur de rapports que vous souhaitez utiliser, puis sélectionnez Suivant.

  7. Sous Informations d’identification, spécifiez les informations d’identification que le serveur de rapports utilise pour se connecter à la base de données du serveur de rapports, puis sélectionnez Suivant.

  8. Sélectionnez Suivant, puis Terminer.

Remarque

Dans une installation de SSRS, l’instance sql Server Moteur de base de données doit inclure le rôle RSExecRole. La création de rôle, l’inscription de connexion et les attributions de rôles se produisent lorsque vous utilisez le Gestionnaire de configuration du serveur de rapports pour définir la connexion de base de données du serveur de rapports. Si vous utilisez d’autres approches, telles que l’utilitaire d’invite de commandes rsconfig.exe, le serveur de rapports n’est pas dans un état de travail. Dans ce cas, vous devrez peut-être écrire du code WMI (Windows Management Instrumentation) pour rendre le serveur de rapports disponible. Pour plus d’informations, consultez Access the Reporting Services WMI provider.