Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Remarque
La mise en miroir de bases de données dans SQL Server est une technologie distincte de la mise en miroir de bases de données Microsoft Fabric.
La mise en miroir des bases de données dans SQL Server vous permet de conserver une copie, ou miroir, d’une base de données SQL Server sur un serveur de secours. La mise en miroir garantit qu’il existe à tout moment deux copies distinctes des données, offrant ainsi une haute disponibilité et une redondance complète des données. Le fournisseur SqlClient Microsoft pour SQL Server assure une prise en charge implicite de la mise en miroir de bases de données. Le développeur n’a rien à faire une fois le client configuré pour une base de données SQL Server. L’objet SqlConnection prend également en charge un mode de connexion explicite qui permet d’indiquer le nom d’un serveur partenaire de basculement dans ConnectionString.
La séquence d’événements simplifiée suivante se produit pour un objet SqlConnection qui cible une base de données configurée pour la mise en miroir :
- L’application cliente se connecte à la base de données principale. Le serveur renvoie le nom du serveur partenaire, que le client met en cache.
- Si le serveur contenant la base de données principale échoue ou si la connectivité est interrompue, l’état de la connexion et de la transaction est perdu. L’application cliente tente à nouveau d’établir une connexion à la base de données principale et échoue.
- L’application cliente tente alors de manière transparente d’établir une connexion à la base de données miroir sur le serveur partenaire. En cas de tentative, la connexion est redirigée vers la base de données miroir, qui devient alors la nouvelle base de données principale.
Spécification du partenaire de basculement dans la chaîne de connexion
Si vous indiquez le nom d’un serveur partenaire de basculement dans la chaîne de connexion et que la base de données principale n’est pas disponible lors de la connexion de l’application cliente, le client tente de manière transparente une connexion avec le partenaire de basculement.
";Failover Partner=PartnerServerName"
Si vous omettez le nom du serveur partenaire de basculement et que la base de données principale n’est pas disponible lors de la première connexion de l’application cliente, une exception SqlException se produit.
Lorsque l’ouverture d’une connexion SqlConnection réussit, le serveur retourne le nom du partenaire de basculement, qui remplace les valeurs éventuellement fournies dans la chaîne de connexion.
Notes
Vous devez spécifier explicitement le nom de catalogue ou de base de données initial dans la chaîne de connexion pour les scénarios de mise en miroir de bases de données. Si le client reçoit des informations de basculement sur une connexion qui n’a pas de base de données ou de catalogue initial spécifié explicitement, les informations de basculement ne sont pas mises en cache et l’application ne tente pas de basculer en cas d’échec du serveur principal. Si une chaîne de connexion a une valeur pour le partenaire de basculement, mais pas de valeur pour la base de données ou le catalogue initial, une InvalidArgumentException est déclenchée.
Récupération du nom du serveur actuel
En cas de basculement, vous pouvez récupérer le nom du serveur avec lequel la connexion actuelle est établie à l’aide de la propriété DataSource d’un objet SqlConnection. Le fragment de code suivant récupère le nom du serveur actif, en supposant que la variable de connexion fait référence à une SqlConnection ouverte.
Quand un événement de basculement se produit et que la connexion bascule vers le serveur miroir, la propriété DataSource se met à jour afin de refléter le nom du miroir.
string activeServer = connection.DataSource;
Comportement de la mise en miroir de SqlClient
Le client tente toujours de se connecter au serveur principal. En cas d’échec, il essaie le partenaire de basculement. Si la base de données miroir a déjà été basculée vers le rôle principal sur le serveur partenaire, la connexion réussit et le nouveau mappage de miroir principal est envoyé au client et mis en cache pendant la durée de vie du AppDomain appelant. Il n’est pas stocké dans un stockage persistant ni disponible pour les connexions ultérieures dans un autre AppDomain ou un autre processus. Toutefois, il est disponible pour des connexions ultérieures à l’intérieur du même AppDomain. Un autre AppDomain ou un autre processus s’exécutant sur le même ou un autre ordinateur possède toujours son pool de connexions ; ces connexions ne sont pas réinitialisées. Dans ce cas, en cas d’arrêt de la base de données principale, chaque processus ou AppDomain échoue une fois et le pool est automatiquement effacé.
Notes
Le support de la mise en miroir sur le serveur est configuré pour chaque base de données. Si les opérations de manipulation de données sont exécutées sur d’autres bases de données non incluses dans le jeu de données principal/miroir, soit en utilisant des noms en plusieurs parties, soit en modifiant la base de données en cours, les modifications apportées à ces autres bases de données ne se propagent pas en cas de défaillance. Aucune erreur n’est générée lorsque les données sont modifiées dans une base de données qui n’est pas mise en miroir. Le développeur doit évaluer l’impact possible de ces opérations.
Étapes suivantes
Ressources de mise en miroir de bases de données
Pour plus d’informations et de documentation conceptuelle sur la configuration, le déploiement et l’administration de la mise en miroir, consultez les ressources suivantes dans la documentation de SQL Server.
| Ressource | Description |
|---|---|
| Mise en miroir de bases de données | Décrit comment installer et configurer la mise en miroir dans SQL Server. |