Mise en miroir et captures instantanées de bases de données

Une base de données miroir maintenue à des fins de disponibilité peut être utilisée dans le but de décharger la création de rapports. Pour utiliser une base de données miroir à des fins de création de rapports, créez une capture instantanée de base de données sur la base de données miroir et redirigez les requêtes de connexions clientes vers la capture instantanée la plus récente. Une capture instantanée de base de données est une image – statique, en lecture seule et cohérente par rapport aux transactions – de sa base de données source telle qu'elle existait au moment de la création de la capture. Pour créer une capture instantanée de base de données dans une base de données miroir, la base de données doit être dans un état de mise en miroir synchronisée.

Contrairement à la base de données miroir, une capture instantanée de base de données est accessible à tous les clients. Tant que le serveur miroir communique avec le serveur principal, vous pouvez demander aux clients sources des rapports de se connecter à une capture instantanée. Notez qu'une capture instantanée de base de données étant statique, les nouvelles données ne sont pas disponibles. Pour que les utilisateurs puissent accéder aux données relativement récentes, une capture instantanée de base de données doit être créée régulièrement et les applications doivent diriger les connexions clientes entrantes vers cette nouvelle capture.

Une nouvelle capture instantanée de base de données est pratiquement vide mais, au fil du temps, elle grossit à mesure qu'un nombre croissant de pages de base de données sont mises à jour pour la première fois. Du fait de ce mode de croissance incrémentielle des captures instantanées dans une base de données, chaque capture instantanée consomme autant de ressources qu'une base de données classique. Selon les configurations du serveur miroir et du serveur principal, la présence d'un nombre excessif de captures instantanées dans une base de données miroir peut réduire les performances dans la base de données principale. Nous vous recommandons donc de conserver uniquement quelques captures relativement récentes dans vos bases de données miroir. Normalement, une fois que vous avez créé une capture instantanée de remplacement, vous devez rediriger les requêtes entrantes vers la nouvelle capture instantanée et supprimer la capture antérieure après avoir exécuté toutes les requêtes en cours.

[!REMARQUE]

Pour plus d'informations sur les captures instantanées de base de données, consultez Captures instantanées de base de données.

S'il se produit un basculement de rôle, la base de données et ses captures instantanées sont redémarrées, ce qui entraîne une déconnexion temporaire des utilisateurs. Ensuite, les captures instantanées de base de données demeurent sur l'instance de serveur où elles ont été créées et qui est devenue la nouvelle base de données principale. Les utilisateurs peuvent continuer à utiliser ces captures instantanées après le basculement. Cependant, il s'ensuit une charge supplémentaire sur le nouveau serveur principal. Si les performances constituent l'une de vos préoccupations majeures, nous vous recommandons de créer une capture instantanée sur la nouvelle base de données miroir dès qu'elle est disponible, de rediriger les clients vers la nouvelle capture instantanée et de supprimer de la base de données miroir précédente l'ensemble des captures instantanées de base de données.

[!REMARQUE]

Pour une solution de création de rapports dotée d'une bonne capacité de déploiement horizontal, envisagez la réplication. Pour plus d'informations, consultez Entreposage de données et rapports.

Exemple

Cet exemple créé des captures instantanées de bases de données sur une base de données miroir.

Imaginons que la base de données d'une session de mise en miroir de base de données soit la base de données AdventureWorks. Cet exemple crée trois captures instantanées de base de données sur la copie miroir de la base de données AdventureWorks qui réside sur le lecteur F. Les noms des captures instantanées sont AdventureWorks_0600, AdventureWorks_1200 et AdventureWorks_1800 ; ils identifient les heures de création approximatives des captures.

  1. Créez la première capture instantanée de base de données sur le miroir de la base de données AdventureWorks.

    CREATE DATABASE AdventureWorks_0600
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_0600.SNP')
       AS SNAPSHOT OF AdventureWorks
    
  2. Créez la deuxième capture instantanée de base de données sur le miroir de la base de données AdventureWorks. Les utilisateurs qui se servent encore de AdventureWorks_0600 peuvent continuer à le faire.

    CREATE DATABASE AdventureWorks_1200
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1200.SNP')
       AS SNAPSHOT OF AdventureWorks
    

    À ce stade, les nouvelles connexions clientes peuvent être orientées, par programme, vers la capture instantanée la plus récente.

  3. Créez la troisième capture instantanée de base de données sur le miroir de la base de données AdventureWorks. Les utilisateurs qui se servent encore de AdventureWorks_0600 ou de AdventureWorks_1200 peuvent continuer à le faire.

    CREATE DATABASE AdventureWorks_1800
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1800.SNP')
        AS SNAPSHOT OF AdventureWorks
    

    À ce stade, les nouvelles connexions clientes peuvent être orientées, par programme, vers la capture instantanée la plus récente.

Pour créer une capture instantanée de base de données

Pour afficher une capture instantanée de base de données

Pour supprimer une capture instantanée de base de données