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

Cette rubrique explique comment restaurer une base de données SQL Server à un nouvel emplacement, et éventuellement renommer la base de données, dans SQL Server 2012 à l'aide de SQL Server Management Studio 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.

Dans cette rubrique

  • Avant de commencer :

    Limitations et restrictions

    Conditions préalables

    Recommandations

    Sécurité

  • Pour restaurer une base de données à un nouvel emplacement et renommer éventuellement la base de données, utilisez :

    SQL Server Management Studio

    Transact-SQL

  • Tâches associées

Avant de commencer

Limitations et restrictions

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

Conditions préalables

  • Que vous soyez en mode de récupération complète ou en mode de récupération utilisant les journaux de transactions, pour pouvoir restaurer une base de données, vous devez d'abord sauvegarder le journal des transactions actif. Pour plus d'informations, consultez Sauvegarder un journal des transactions (SQL Server).

Recommandations

  • Pour restaurer une base de données chiffrée, vous devez avoir accès au certificat ou à la clé asymétrique qui a servi à chiffrer la base de données. Sans le certificat et la clé asymétrique, la base de données ne peut pas être restaurée. En conséquence, le certificat utilisé pour chiffrer la clé de chiffrement de base de données doit être conservé tant que la sauvegarde est utile. Pour plus d'informations, consultez Certificats et clés asymétriques SQL Server.

  • Pour plus d'informations sur d'autres points à prendre en considération pour déplacer une base de données, consultez Copier des bases de données avec la sauvegarde et la restauration.

  • Si vous restaurez une base de données SQL Server 2005 ou SQL Server 2008 dans SQL Server 2012, 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 comprend des index de recherche en texte intégral, la mise à niveau les importe, les réinitialise ou les reconstruit, selon le paramètre de la propriété de serveur upgrade_option . Si l'option de mise à niveau a la valeur Importer (upgrade_option = 2) ou Reconstruire (upgrade_option = 0), les index de recherche en texte intégral ne seront pas disponibles pendant la mise à niveau. Selon le volume de données indexé, l'importation peut prendre plusieurs heures et la reconstruction jusqu'à dix fois plus longtemps. Notez également que lorsque l'option de mise à niveau est Importer, les index de recherche en texte intégral associés sont reconstruits si aucun catalogue de texte intégral n'est disponible. Pour modifier le paramètre de la propriété de serveur upgrade_option, utilisez sp_fulltext_service.

Sécurité

Pour des raisons de sécurité, nous vous recommandons de ne pas attacher ni restaurer des bases de données provenant de sources inconnues ou non approuvées. Ces bases de données peuvent contenir du code malveillant susceptible d'exécuter du code Transact-SQL indésirable ou de provoquer des erreurs en modifiant le schéma ou la structure physique des bases de données. 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 restaurée n'existe pas, l'utilisateur doit posséder les autorisations CREATE DATABASE afin de pouvoir exécuter RESTORE. Si la base de données existe, les autorisations RESTORE reviennent par défaut aux membres des rôles serveur fixes sysadmin et dbcreator et au propriétaire (dbo) de la base de données.

Les autorisations RESTORE sont attribuées aux rôles dont les informations d'appartenance sont toujours immédiatement accessibles à partir du serveur. Étant donné que l'appartenance au rôle de base de données fixe ne peut être contrôlée que lorsque la base de données est accessible et non endommagée, ce qui n'est pas toujours le cas lorsque RESTORE est exécuté, les membres du rôle de base de données fixe db_owner ne détiennent pas d'autorisations RESTORE.

Icône de flèche utilisée avec le lien Retour en haut[Top]

Utilisation de SQL Server Management Studio

Pour restaurer une base de données à un nouvel emplacement et renommer éventuellement la base de données

  1. Connectez-vous à l'instance appropriée du Moteur de base de données SQL Server puis, dans l'Explorateur d'objets, cliquez sur le nom du serveur pour développer son arborescence.

  2. Cliquez avec le bouton droit sur Bases de données, puis cliquez sur 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, utilisez la section Source pour préciser la source et l'emplacement des jeux de sauvegarde à restaurer. Sélectionnez l'une des options suivantes :

    • 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 qui ont été sauvegardées selon l'historique de sauvegarde msdb.

    [!REMARQUE]

    Si la sauvegarde est prise à partir d'un serveur différent, le serveur de destination ne disposera 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.

    1. Unité

      Cliquez sur le bouton Parcourir (...) pour ouvrir la boîte de dialogue Sélectionner les unités 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, cliquez sur Ajouter.

      Après avoir ajouté les unités souhaitées à la zone de liste Support de sauvegarde, cliquez sur OK pour revenir à la page Général.

      Dans la zone de liste Source : Unité : Base de données, sélectionnez le nom de la base de données à restaurer.

      Remarque   Cette liste n'est disponible que lorsque Unité est sélectionné. Seules les bases de données qui ont des copies de sauvegarde sur l'unité sélectionnée seront 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 sur, laissez la valeur par défaut Vers la dernière sauvegarde prise ou cliquez sur Chronologie pour accéder à la boîte de dialogue Chronologie de sauvegarde afin de sélectionner manuellement une limite spécifique pour arrêter l'action de récupération. Pour plus d'informations sur la façon de désigner une limite spécifique, consultez Chronologie de sauvegarde.

  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 remplacer 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 obtenir des informations sur les colonnes de la grille Jeux de sauvegarde à restaurer, consultez 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 cliquez sur 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).

Icône de flèche utilisée avec le lien Retour en haut[Top]

Utilisation de Transact-SQL

Pour restaurer une base de données à un nouvel emplacement et renommer éventuellement la base de données

  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 retourne une liste des fichiers journaux et des fichiers de base de données contenus dans le jeu de sauvegarde. La syntaxe de base est la suivante :

    RESTORE FILELISTONLY FROM <backup_device> WITH FILE = backup_set_file_number

    Ici, backup_set_file_number indique la position de la sauvegarde sur 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 » dans Arguments RESTORE (Transact-SQL).

    Cette instruction prend également en charge plusieurs options WITH. Pour plus d'informations, consultez RESTORE FILELISTONLY (Transact-SQL).

  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 pour déplacer chacun des fichiers de la base de données et éviter des collisions avec les fichiers existants.

    La syntaxe Transact-SQL de base pour restaurer la base de données en utilisant un nouvel emplacement et un nouveau nom est :

    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. Cela suppose d'utiliser une instruction RESTORE VERIFYONLY spécifiant les mêmes paramètres MOVE que ceux que vous envisagez d'utiliser dans votre instruction RESTORE DATABASE.

    Le tableau suivant décrit les arguments de cette instruction RESTORE en termes de restauration d'une base de données à un nouvel emplacement. Pour plus d'informations sur ces arguments, consultez RESTORE (Transact-SQL).

    • new_database_name
      Nouveau nom de la base de données.

      [!REMARQUE]

      Si vous restaurez la base de données vers une autre instance de serveur, vous pouvez conserver son nom d'origine au lieu d'en utiliser un nouveau.

    • backup_device [ ,...n ]
      Spécifie une liste séparée par des virgules de 1 à 64 unités de sauvegarde à partir desquelles la sauvegarde de la base de données sera restaurée. Vous pouvez spécifier une unité de sauvegarde physique ou une unité de sauvegarde logique correspondante, si celle-ci est définie. Pour spécifier une unité de sauvegarde physique, utilisez l'option DISK ou TAPE :

      { DISK | TAPE } = physical_backup_device_name

      Pour plus d'informations, consultez Unités de sauvegarde (SQL Server).

    • { 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. Ainsi, la valeur 1 de backup_set_file_number peut indiquer le premier jeu de sauvegarde sur le support de sauvegarde, et la valeur 2 de backup_set_file_number le second jeu. Vous pouvez obtenir le backup_set_file_number d'un jeu de sauvegarde en utilisant l'instruction 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 « Spécification d'un jeu de sauvegarde » dans Arguments RESTORE (Transact-SQL).

    • MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
      Spécifie que les données ou le fichier journal spécifiés par logical_file_name_in_backup seront restaurés à l'emplacement spécifié par operating_system_file_name. Spécifiez une instruction MOVE pour chaque fichier logique du jeu de sauvegarde que vous voulez restaurer à 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]

      Utilisez RESTORE FILELISTONLY pour obtenir une liste des fichiers logiques contenus dans le jeu de sauvegarde.

      operating_system_file_name

      Indique un nouvel emplacement pour le fichier spécifié dans logical_file_name_in_backup. Le fichier sera restauré à cet emplacement.

      Éventuellement, operating_system_file_name spécifie un nouveau nom de fichier pour le fichier restauré. Cette option est nécessaire si vous créez une copie d'une base de données existante sur la même instance de serveur.

      n

      Est un espace réservé indiquant que vous pouvez spécifier des instructions MOVE supplémentaires.

Exemple (Transact-SQL)

Cet exemple crée une base de données nommée MyAdvWorks en restaurant une sauvegarde de l'exemple de base de données AdventureWorks2012 , qui comprend deux fichiers : AdventureWorks2012 _Data et AdventureWorks2012 _Log. Cette base de données utilise le mode de récupération simple. La base de données AdventureWorks2012 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 permet de déterminer le nombre et le nom 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, notamment les restaurations dans le temps, utilisent la base de données MyAdvWorks_FullRM qui est créée à partir de AdventureWorks2012 , comme dans l'exemple MyAdvWorks suivant. Toutefois, la base de données MyAdvWorks_FullRM ainsi obtenue doit être modifiée pour utiliser le mode 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.
-- AdventureWorks2012_Backup is the name of the backup device.
RESTORE FILELISTONLY
   FROM AdventureWorks2012_Backup;
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
   FROM AdventureWorks2012_Backup
   WITH RECOVERY,
   MOVE 'AdventureWorks2012_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf', 
   MOVE 'AdventureWorks2012_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';
GO

Pour voir un exemple de création d'une sauvegarde complète de la base de données AdventureWorks2012 , consultez Créer une sauvegarde complète de base de données (SQL Server).

Icône de flèche utilisée avec le lien Retour en haut[Top]

Tâches associées

Icône de flèche utilisée avec le lien Retour en haut[Top]

Voir aussi

Référence

RESTORE (Transact-SQL)

Concepts

Gérer les métadonnées lors de la mise à disposition d'une base de données sur une autre instance de serveur (SQL Server)

Copier des bases de données avec la sauvegarde et la restauration