Pour être très flexible et déplacer plus facilement la base de données sur différents serveurs, nous avons eu l'idée d'utiliser un alias par base de données. Donc, en modifiant simplement une entrée DNS, nous pouvons acheminer toutes les requêtes sur un autre serveur de base de données sans modifier la chaîne de connexion ni le ré-déploiement de l'application client correspondante.
Clarifier:
Par base de données, nous aurions un alias. Donc, si la base de données est déplacée vers un autre serveur, seuls son alias DNS doit être modifié.
Par exemple:
Selon donc que DB1 a été déplacé de Server1 à Server2, il n'est pas nécessaire de modifier la chaîne de connexion. Seule l'entrée d'alias DNS doit être modifiée, transmettre à Server2 au lieu de serveur1.
Y a-t-il des inconvénients connus à cela?
Un inconvénient mineur serait que vous devriez ajouter un nom alternatif (SAN) sur le sujet au certificat lié à SQL Server si vous utilisez des connexions cryptées. Cela pourrait être une douleur importante si vous avez un serveur "partagé" qui héberge un certain nombre d'applications plus petites et que vous souhaitez configurer un alias pour chaque application.
Si vous utilisez un alias séparé pour chaque application, vous devez générer et installer un nouveau certificat chaque fois que vous ajoutez une nouvelle application au serveur. La même chose pourrait s'appliquer si vous souhaitez vous assurer qu'il n'y ait pas de SANS inutilisé/non valide dans le certificat, vous auriez besoin d'un nouveau certificat chaque fois que vous avez supprimé une application.
Sachez que lorsque vous utilisez DNS CName avec une base de données SQL, vous devez être conscient du paramètre TTL. Ce paramètre indique à un système combien de temps l'entrée DNS doit être mise en cache car avant qu'un retour sur le serveur DNS soit requis. Vous aurez probablement besoin d'ajuster le TTL à l'avance, de sorte que lorsque vous effectuez le commutateur, vous n'avez pas de systèmes client qui ont l'ancienne entrée mise en cache. Vous pouvez exécuter la commande 'ipconfig/flushdns' pour rincer le cache, mais il doit être exécuté sur chaque ordinateur individuellement.