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
Ouvrez le Gestionnaire de configuration du serveur de rapports.
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.
Utilisez la page État du serveur de rapports pour arrêter le service du serveur de rapports.
Ouvrez SQL Server Management Studio et connectez-vous à l’instance SQL Server qui héberge les bases de données du serveur de rapports.
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
Recherchez les fichiers .mdf et .ldf pour votre instance SQL Server actuelle. Ils se trouvent dans le dossier Données.
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.
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.
Cliquez avec le bouton droit sur le nœud Bases de données , puis sélectionnez Attacher.
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
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.
Démarrez le Gestionnaire de configuration du serveur de rapports et ouvrez une connexion au serveur de rapports.
Sur la page Base de données, sélectionnez la nouvelle instance de SQL Server, puis sélectionnez Se connecter.
Sélectionnez la base de données du serveur de rapports que vous venez de déplacer, puis sélectionnez Appliquer.
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.
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, parC:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak
exemple .RESTORE FILELISTONLY FROM DISK='<path-to-report-server-database-backup-file>';
Vous trouverez le nom logique dans la colonne LogicalName de la sortie.
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, parC:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak
exemple .RESTORE HEADERONLY FROM DISK='<path-to-report-server-database-backup-file>';
Vous trouverez la position du fichier dans la colonne Position de la sortie.
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 unRESTORING
é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'argumentRECOVERY
.
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
Démarrez le Gestionnaire de configuration du serveur de rapports et ouvrez une connexion au serveur de rapports.
Dans la page Base de données, sélectionnez Modifier la base de données.
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.
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.
Après avoir testé la connexion, sélectionnez Suivant.
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.
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.
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.