Procédure : préparer une base de données miroir pour la mise en miroir (Transact-SQL)

La base de données miroir doit exister avant qu'une session de mise en miroir de base de données puisse commencer. Le nom de la base de données miroir doit être le même que celui de la base de données principale. Le propriétaire de la base de données ou l'administrateur système peuvent créer la base de données miroir à partir d'une sauvegarde complète récente de la base de données principale et d'au moins une sauvegarde du journal ultérieure. Pour que la mise en miroir fonctionne, la base de données miroir doit rester dans l'état RESTORING. Par conséquent, lors de la restauration d'une sauvegarde sur une base de données miroir, vous devez toujours utiliser WITH NORECOVERY pour chaque opération de restauration.

Si la mise en miroir a été supprimée et que la base de données miroir est toujours à l'état RECOVERING, vous pouvez redémarrer la mise en miroir. Cependant, dans un premier temps, vous devez effectuer au moins une sauvegarde du journal sur la base de données principale. Puis, sur la base de données miroir, restaurez à l'aide de WITH NORECOVERY toutes les sauvegardes des journaux effectuées sur la base de données principale depuis la suppression de la mise en miroir.

[!REMARQUE]

Vous ne pouvez pas mettre en miroir les bases de données système master, msdb, temp ou model.

Procédure

Pour créer une base de données pour la mise en miroir de bases de données

  1. Vérifiez que MicrosoftSQL Server 2008 est installé sur les instances de serveur principal et de serveur miroir.

  2. Vérifiez que la base de données utilise le mode de restauration complète.

    Pour plus d'informations, consultez Procédure : affichage ou modification du mode de récupération d'une base de données (SQL Server Management Studio) ou sys.databases (Transact-SQL) et ALTER DATABASE (Transact-SQL).

  3. Sauvegardez la base de données principale dans une sauvegarde complète de base de données.

    Pour plus d'informations, consultez Procédure : sauvegarder une base de données (SQL Server Management Studio) ou Procédure : créer une sauvegarde complète de base de données (Transact-SQL).

    [!REMARQUE]

    Vous pouvez également restaurer une sauvegarde complète de base de données existante et, éventuellement, une sauvegarde de base de données différentielle suivie de chaque sauvegarde de journal consécutive.

  4. Assurez-vous que le système dans lequel vous envisagez de créer la base de données miroir possède un lecteur de disque avec suffisamment d'espace pour contenir la base de données.

  5. À moins que la sauvegarde soit sur un lecteur réseau accessible à partir des deux systèmes, copiez la sauvegarde de la base de données sur ce système.

  6. Pour créer la base de données miroir, restaurez la sauvegarde complète de la base de données sur l'instance du serveur miroir. L'instruction RESTORE DATABASE database_name doit spécifier WITH NORECOVERY, où database_name représente le nom de la base de données à mettre en miroir.

    [!REMARQUE]

    Si vous restaurez le groupe de fichiers de base de données par groupe de fichiers, veillez à restaurer l'intégralité de la base de données.

    En outre, nous recommandons, si possible, que le chemin d'accès (notamment la lettre de lecteur) de la base de données miroir soit identique au chemin d'accès de la base de données principale.

    Si les structures de fichiers doivent différer, par exemple, si la base de données principale se trouve sur le lecteur « F: », alors qu'aucun lecteur F: ne se trouve sur le système miroir, vous devez inclure l'option MOVE dans l'instruction RESTORE.

    Important

    Pour pouvoir ajouter un fichier pendant une session de mise en miroir sans compromettre la session, il faut que le chemin d'accès au fichier existe sur les deux serveurs. Par conséquent, si vous déplacez des fichiers de base de données lors de la création de la base de données miroir, une opération d'ajout de fichier ultérieure peut échouer sur la base de données miroir et entraîner la suspension de la mise en miroir. Pour plus d'informations sur le traitement d'une opération de création de fichier qui a échoué, consultez Résolution des problèmes de déploiement de la mise en miroir de bases de données.

    Pour plus d'informations, consultez RESTORE (Transact-SQL) et Arguments RESTORE (Transact-SQL).

  7. Généralement, au moins une sauvegarde du journal doit être réalisée sur la base de données principale, copiée sur le serveur miroir et restaurée sur la base de données miroir (à l'aide de WITH NORECOVERY). Toutefois, une sauvegarde du journal peut s'avérer superflue, si la base de données vient d'être créée et qu'aucune sauvegarde du journal n'a été encore réalisée ou si le mode de récupération vient d'être modifié de SIMPLE à FULL.

    Pour appliquer la sauvegarde du journal à la base de données miroir, vous pouvez utiliser sur le serveur miroir SQL Server ou Transact-SQL :

  8. Si des sauvegardes de journal supplémentaires ont été effectuées sur la base de données principale après la sauvegarde du journal requise, vous devez également les copier sur le serveur miroir et appliquer chacune de ces sauvegardes de journal à la base de données miroir, en commençant par la première et en utilisant systématiquement WITH NORECOVERY.

Remarque relative à la sécuritéRemarque relative à la sécurité

TRUSTWORTHY a la valeur OFF lorsqu'une base de données est sauvegardée. Par conséquent, la propriété TRUSTWORTHY d'une nouvelle base de données miroir a toujours la valeur OFF. Si la base de données doit être fiable après un basculement, des opérations de configuration supplémentaires sont requises. Pour plus d'informations, consultez Procédure : configurer une base de données miroir pour qu'elle utilise la propriété Trustworthy.

Important

Si la mise en miroir de base de données est arrêtée, toutes les sauvegardes de journal réalisées ultérieurement sur la base de données principale doivent être appliquées à la base de données miroir avant de redémarrer la mise en miroir.

Exemple

Avant de démarrer une session de mise en miroir de bases de données, vous devez créer la base de données miroir. Vous devez procéder à cette opération avant de démarrer la session de mise en miroir.

L'exemple suivant utilise la base de données d'exemple AdventureWorks qui emploie par défaut le mode de récupération simple.

  1. Pour utiliser la mise en miroir de base de données sur la base de données AdventureWorks, modifiez-la afin qu'elle utilise le mode de restauration complète :

    USE master;
    GO
    ALTER DATABASE AdventureWorks 
    SET RECOVERY FULL;
    GO
    
  2. Après avoir changé le mode de récupération de SIMPLE à FULL, créez une sauvegarde complète qui pourra être utilisée pour créer la base de données miroir. Dans la mesure où le mode de récupération vient d'être modifié, l'option WITH FORMAT est spécifiée pour créer un nouveau support de sauvegarde. Il peut se révéler utile de séparer les sauvegardes effectuées en mode de restauration complète des sauvegardes préalablement effectuées sous le mode de récupération simple. Pour les besoins de cet exemple, le fichier de sauvegarde (C:\AdventureWorks.bak) est créé sur le même lecteur que la base de données.

    [!REMARQUE]

    Dans le cas d'une base de données de production, il est conseillé de toujours effectuer les sauvegardes sur une unité distincte.

    Sur l'instance de serveur principal (sur PARTNERHOST1), créez une sauvegarde complète de la base de données principale comme suit :

    BACKUP DATABASE AdventureWorks 
        TO DISK = 'C:\AdventureWorks.bak' 
        WITH FORMAT
    GO
    
  3. Copiez cette sauvegarde complète sur le serveur miroir.

  4. Restaurez ensuite la sauvegarde complète à l'aide de l'option WITH NORECOVERY sur l'instance de serveur miroir. La commande de restauration dépend si les chemins d'accès aux bases de données principale et miroir sont identiques ou non.

    • Si les chemins d'accès sont identiques :

      Sur l'instance de serveur miroir (sur PARTNERHOST5), restaurez la sauvegarde complète comme suit :

      RESTORE DATABASE AdventureWorks 
          FROM DISK = 'C:\AdventureWorks.bak' 
          WITH NORECOVERY
      GO
      
    • Si les chemins d'accès sont différents :

      Si le chemin d'accès de la base de données miroir n'est pas le même que celui de la base de données principale (lettres de lecteurs distinctes, par exemple), la création de la base de données miroir requiert l'intégration d'une clause MOVE dans l'opération de restauration.

      Important

      Si les chemins d'accès des bases de données principale et miroir diffèrent, vous ne pouvez pas ajouter de fichier. La raison tient à la réception du journal pour l'opération d'ajout de fichier puisque l'instance de serveur miroir tente de placer le nouveau fichier dans l'emplacement utilisé par la base de données principale.

      Par exemple, la commande ci-dessous restaure une sauvegarde d'une base de données principale résidant dans C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\ dans un emplacement différent, D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\, où la base de données miroir doit résider.

      RESTORE DATABASE AdventureWorks
         FROM DISK='C:\AdventureWorks.bak'
         WITH NORECOVERY, 
            MOVE 'AdventureWorks_Data' TO 
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf', 
            MOVE 'AdventureWorks_Log' TO
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf';
      GO
      
  5. Après avoir créé la sauvegarde complète, vous devez créer une sauvegarde du journal sur la base de données principale. Par exemple, l'instruction Transact-SQL suivante sauvegarde le journal dans le même fichier utilisé par la sauvegarde complète antérieure :

    BACKUP LOG AdventureWorks 
        TO DISK = 'C:\AdventureWorks.bak' 
    GO
    
  6. Avant de démarrer la mise en miroir, vous devez appliquer la sauvegarde du journal requise (et toutes les sauvegardes de journal ultérieures).

    Par exemple, l'instruction Transact-SQL ci-dessous restaure le premier journal provenant de C:\AdventureWorks.bak :

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. Si des sauvegardes de journal supplémentaires se produisent avant le démarrage de la mise en miroir, vous devez également restaurer toutes ces sauvegardes de journal, dans l'ordre, sur le serveur miroir, en utilisant WITH NORECOVERY.

    Par exemple, l'instruction Transact-SQL ci-dessous restaure les deux journaux supplémentaires provenant de C:\AdventureWorks.bak :

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=2, NORECOVERY
    GO
    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=3, NORECOVERY
    GO
    

Pour voir un exemple complet illustrant la configuration de la mise en miroir de base de données, la configuration de la sécurité, la préparation de la base de données miroir, la définition des partenaires et l'ajout d'un témoin, consultez Configuration de la mise en miroir d'une base de données.