Partager via


Restaurer une base de données à un nouvel emplacement (SQL Server)

S’applique à :SQL Server

Cet article explique comment restaurer une base de données SQL Server vers un nouvel emplacement et éventuellement renommer la base de données dans SQL Server, à l’aide de SQL Server Management Studio (SSMS) ou de Transact-SQL. Vous pouvez déplacer une base de données vers un nouveau chemin d'accès au répertoire ou créer une copie d'une base de données sur la même instance de serveur ou sur une instance différente.

Limites

  • L'administrateur système qui restaure une sauvegarde complète de base de données doit être la seule personne à utiliser la base de données à restaurer.

Prérequis

  • Lorsque vous utilisez le modèle de récupération complète ou journalisée en bloc, avant de pouvoir restaurer une base de données, vous devez sauvegarder le journal des transactions actif. Pour plus d’informations, consultez Sauvegarder un journal des transactions.

  • Pour restaurer une base de données chiffrée, vous devez avoir accès au certificat ou à la clé asymétrique utilisée pour chiffrer la base de données. Sans ce certificat ou clé asymétrique, vous ne pouvez pas restaurer la base de données. Vous devez conserver le certificat utilisé pour chiffrer la clé de chiffrement de base de données tant que vous avez besoin de la sauvegarde. Pour plus d’informations, consultez certificats SQL Server et clés asymétriques.

Recommandations

  • Pour plus d’informations sur le déplacement d’une base de données, consultez Copier des bases de données avec sauvegarde et restauration.

  • Si vous restaurez une base de données SQL Server 2005 (9.x) ou version ultérieure dans SQL Server, la base de données est automatiquement mise à niveau. En général, la base de données est immédiatement disponible. Toutefois, si une base de données SQL Server 2005 (9.x) a des index de recherche en texte intégral, le processus de mise à niveau importe, réinitialise ou régénère ces bases, en fonction du paramètre de la propriété du upgrade_option serveur. Si l’option de mise à niveau est définie pour importer (upgrade_option = 2) ou reconstruire (upgrade_option = 0), les index de recherche en texte intégral ne sont pas disponibles pendant la mise à niveau. Selon le volume de données indexé, l’importation peut prendre plusieurs heures et la reconstruction peut durer jusqu’à dix fois plus longtemps. En outre, lorsque l’option de mise à niveau est définie pour importer, les index de recherche en texte intégral associés sont reconstruits si un catalogue de texte intégral n’est pas disponible. Pour modifier le paramètre de la propriété du upgrade_option serveur, utilisez sp_fulltext_service.

Sécurité

À des fins de sécurité, nous vous déconseillons d’attacher ou de restaurer des bases de données à partir de sources inconnues ou non approuvées. Ces bases de données peuvent contenir du code malveillant qui peut exécuter du code Transact-SQL involontaire ou provoquer des erreurs en modifiant le schéma ou la structure de base de données physique. Avant d’utiliser une base de données issue d’une source inconnue ou non approuvée, exécutez DBCC CHECKDB sur la base de données sur un serveur autre qu’un serveur de production et examinez également le code, notamment les procédures stockées ou le code défini par l’utilisateur, de la base de données.

autorisations

Si la base de données en cours de restauration n’existe pas, l’utilisateur doit disposer CREATE DATABASE des autorisations nécessaires pour pouvoir s’exécuter RESTORE. Si la base de données existe, RESTORE les autorisations par défaut sont accordées aux membres des rôles serveur fixes sysadmin et dbcreator et au propriétaire (dbo) de la base de données.

RESTORE les autorisations sont accordées aux rôles dans lesquels les informations d’appartenance sont toujours facilement disponibles pour le serveur. Étant donné que l’appartenance à un rôle de base de données fixe ne peut être vérifiée que lorsque la base de données est accessible et non endommagée, ce qui n’est pas toujours le cas lorsqu’elle RESTORE est exécutée, les membres du rôle de base de données fixe db_owner n’ont RESTORE pas d’autorisations.

Restaurer une base de données à un nouvel emplacement et éventuellement renommer la base de données à l’aide de SSMS

  1. Connectez-vous à l’instance appropriée du moteur de base de données SQL Server, puis, dans l’Explorateur d’objets, sélectionnez le nom du serveur pour développer l’arborescence du serveur.

  2. Cliquez avec le bouton droit sur Bases de données, puis sélectionnez Restaurer la base de données.... La boîte de dialogue Restaurer la base de données s’ouvre.

  3. Dans la page Général , dans la section Source , spécifiez la source et l’emplacement des jeux de sauvegarde à restaurer. Sélectionnez l’une des options suivantes :

    • Sauvegarde de la base de données

      Sélectionnez la base de données à restaurer dans la liste déroulante. La liste contient uniquement les bases de données sauvegardées en fonction de l’historique msdb de sauvegarde.

      Remarque

      Si la sauvegarde est créée à partir d’un autre serveur, le serveur de destination ne dispose pas des informations d’historique de sauvegarde pour la base de données spécifiée. Dans ce cas, sélectionnez Unité pour spécifier manuellement le fichier ou l'unité à restaurer.

    • Appareil

      Sélectionnez le bouton Parcourir (...) pour ouvrir la boîte de dialogue Sélectionner des appareils de sauvegarde . Dans la zone Type du média de sauvegarde , sélectionnez l'un des types d'unités proposés. Pour sélectionner une ou plusieurs unités pour la zone Support de sauvegarde, sélectionnez Ajouter.

      Après avoir ajouté les appareils que vous souhaitez ajouter à la liste des supports de sauvegarde , sélectionnez OK pour revenir à la page Général .

      Dans la liste Source : Appareil : Base de données , sélectionnez le nom de la base de données qui doit être restaurée.

      Remarque

      Cette liste est disponible uniquement lorsque l’appareil est sélectionné. Seules les bases de données qui ont des sauvegardes sur l’appareil sélectionné sont disponibles.

  4. Dans la section Destination , la zone Base de données est automatiquement renseignée avec le nom de la base de données à restaurer. Pour changer le nom de la base de données, entrez le nouveau nom dans la zone Base de données .

  5. Dans la zone Restaurer dans la zone, conservez la valeur par défaut De la dernière sauvegarde effectuée ou sélectionnez Chronologie pour accéder à la boîte de dialogue Chronologie de sauvegarde pour sélectionner manuellement un point dans le temps pour arrêter l’action de récupération. Consultez la chronologie de sauvegarde pour plus d’informations sur la conception d’un point spécifique dans le temps.

  6. Dans la grille Jeux de sauvegarde à restaurer , sélectionnez les sauvegardes à restaurer. Cette grille affiche les sauvegardes disponibles pour l'emplacement spécifié. Par défaut, un plan de récupération est suggéré. Pour ignorer le plan de récupération suggéré, vous pouvez modifier les sélections dans la grille. Les sauvegardes qui dépendent de la restauration d'une sauvegarde antérieure sont automatiquement désélectionnées dès lors que la sauvegarde antérieure est désélectionnée.

    Pour plus d’informations sur les colonnes des jeux de sauvegarde pour restaurer la grille, consultez la page Restaurer la base de données (page Général) .

  7. Pour spécifier le nouvel emplacement des fichiers de base de données, sélectionnez la page Fichiers, puis Déplacer tous les fichiers dans le dossier. Fournissez un nouvel emplacement pour les dossiers Fichier de données et Fichier journal. Pour plus d’informations sur cette grille, consultez Restaurer la base de données (page Fichiers).

  8. Dans la page Options , ajustez les options si vous le souhaitez. Pour plus d’informations sur ces options, consultez Restaurer la base de données (page Options).

Restaurer la base de données à un nouvel emplacement et éventuellement renommer la base de données à l’aide de T-SQL

  1. Déterminez éventuellement les noms logiques et physiques des fichiers dans le jeu de sauvegarde qui contient la sauvegarde complète de la base de données que vous souhaitez restaurer. Cette instruction montre la syntaxe de base pour renvoyer une liste des fichiers journaux et de base de données contenus dans le jeu de sauvegarde :

    RESTORE FILELISTONLY FROM backup_device WITH FILE = *backup_set_file_number
    

    Ici, numéro_fichier_jeu_sauvegarde indique la position de la sauvegarde dans le support de sauvegarde. Vous pouvez obtenir la position d'un jeu de sauvegarde en utilisant l'instruction RESTORE HEADERONLY . Pour plus d’informations, consultez Spécification d’un jeu de sauvegarde.

    Cette instruction prend également en charge plusieurs WITH options. Pour plus d’informations, consultez RESTORE FILELISTONLY.

  2. Utilisez l'instruction RESTORE DATABASE pour restaurer la sauvegarde complète de la base de données. Par défaut, les fichiers de données et les fichiers journaux sont restaurés à leur emplacement d'origine. Pour déplacer une base de données, utilisez l’option MOVE permettant de déplacer chacun des fichiers de base de données et d’éviter les collisions avec les fichiers existants.

La syntaxe de base Transact-SQL pour restaurer la base de données vers un nouvel emplacement avec un nouveau nom est la suivante :

RESTORE DATABASE <new_database_name>
FROM <backup_device> [ , ...n ]
[ WITH
 {
    [ RECOVERY | NORECOVERY ]
    [ , ] [ FILE = { <backup_set_file_number> | @backup_set_file_number } ]
    [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ , ...n ]
} ]
[ ; ]

Remarque

Lorsque vous préparez le déplacement d'une base de données vers un autre disque, vous devez vérifier que l'espace y est suffisant et identifier les collisions potentielles avec des fichiers existants. Cette vérification implique l’utilisation d’instructions RESTORE - VERIFYONLY qui spécifie les mêmes MOVE paramètres que ceux que vous prévoyez d’utiliser dans votre RESTORE DATABASE instruction.

Les informations suivantes décrivent les arguments de cette RESTORE instruction qui concernent la restauration d’une base de données vers un nouvel emplacement. Pour plus d’informations sur ces arguments, consultez Instructions RESTORE.

new_database_name

Nouveau nom de la base de données.

Remarque

Si vous restaurez la base de données sur une autre instance de serveur, vous pouvez utiliser le nom de la base de données d’origine au lieu d’un nouveau nom.

backup_device [ , ... n ]

Spécifie une liste séparée par des virgules comprises entre 1 et 64 périphériques de sauvegarde à partir desquels la sauvegarde de base de données doit être restaurée. Vous pouvez spécifier un périphérique de sauvegarde physique, ou spécifier un périphérique de sauvegarde logique correspondant, s’il en est défini un. Pour spécifier un périphérique de sauvegarde physique, utilisez l’option ou DISK l’option TAPE suivante :

{ DISK | TAPE } = physical_backup_device_name

Pour plus d’informations, consultez Périphériques de sauvegarde.

{ RECOVERY | NORECOVERY }

Si la base de données utilise le mode de récupération complète, vous devrez peut-être appliquer des sauvegardes du journal des transactions après avoir restauré la base de données. Dans ce cas, spécifiez l’option NORECOVERY .

Sinon, utilisez l’option RECOVERY , qui est la valeur par défaut.

FILE = { backup_set_file_number | @backup_set_file_number }

Identifie le jeu de sauvegarde à restaurer. Par exemple, une backup_set_file_number d’indique le premier jeu de 1 sauvegarde sur le support de sauvegarde, et un backup_set_file_number d’indique le deuxième jeu de 2 sauvegarde. Vous pouvez obtenir la backup_set_file_number d’un jeu de sauvegarde à l’aide des instructions RESTORE - HEADERONLY .

Lorsque cette option n’est pas spécifiée, le comportement par défaut consiste à utiliser le premier jeu de sauvegarde de l’unité de sauvegarde.

Pour plus d’informations, consultez les arguments RESTORE (Transact-SQL).

DÉPLACER 'logical_file_name_in_backup' VERS 'operating_system_file_name' [ , ... n ]

Spécifie que les données ou le fichier journal spécifiés par logical_file_name_in_backup doivent être restaurés à l’emplacement spécifié par operating_system_file_name. Spécifiez une MOVE instruction pour chaque fichier logique que vous souhaitez restaurer à partir du jeu de sauvegarde vers un nouvel emplacement.

Option Description
logical_file_name_in_backup Indique le nom logique d'un fichier de données ou d'un fichier journal du jeu de sauvegarde. Le nom de fichier logique d'un fichier de données ou journal dans un jeu de sauvegarde correspond au nom logique qu'il portait dans la base de données au moment de la création du jeu de sauvegarde.



Remarque : Pour obtenir la liste des fichiers logiques du jeu de sauvegarde, utilisez des instructions RESTORE - FILELISTONLY.
operating_system_file_name Spécifie un nouvel emplacement pour le fichier spécifié par logical_file_name_in_backup. Le fichier est restauré à cet emplacement.

Si vous le souhaitez, operating_system_file_name spécifie un nouveau nom de fichier pour le fichier restauré. Un nouveau nom est nécessaire si vous créez une copie d’une base de données existante sur la même instance de serveur.
n Espace réservé indiquant que vous pouvez spécifier des instructions supplémentaires MOVE .

Exemple (Transact-SQL)

Cet exemple crée une base de données nommée MyAdvWorks en restaurant une sauvegarde de l’exemple AdventureWorks2025 de base de données, qui inclut deux fichiers : AdventureWorks2025_Data et AdventureWorks2025_Log. Cette base de données utilise le mode de récupération simple. La base de données AdventureWorks2025 existe déjà sur l'instance de serveur, de sorte que les fichiers de la sauvegarde doivent être restaurés à un nouvel emplacement. L’instruction RESTORE FILELISTONLY est utilisée pour déterminer le nombre et les noms des fichiers de la base de données en cours de restauration. La sauvegarde de la base de données est la première sauvegarde définie sur l'unité de sauvegarde.

Remarque

Les exemples de sauvegarde et de restauration du journal des transactions, y compris les restaurations à un point dans le temps, utilisent la MyAdvWorks_FullRM base de données créée à partir AdventureWorks2025de , tout comme l’exemple suivant MyAdvWorks . Toutefois, la base de données résultante MyAdvWorks_FullRM doit être modifiée pour utiliser le modèle de récupération complète à l’aide de l’instruction Transact-SQL suivante : ALTER DATABASE <database_name> SET RECOVERY FULL.

USE master;
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks2022_Backup is the name of the backup device.
RESTORE FILELISTONLY
   FROM AdventureWorks2022_Backup;

-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
   FROM AdventureWorks2022_Backup
   WITH RECOVERY,
   MOVE 'AdventureWorks2022_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',
   MOVE 'AdventureWorks2022_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';
GO

Pour obtenir un exemple de création d’une sauvegarde complète de base de données de la AdventureWorks2025 base de données, consultez Créer une sauvegarde complète de base de données.