Se connecter à un écouteur de groupe de disponibilité Always OnConnect to an Always On availability group listener

S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions)

Une fois que vous avez terminé la configuration de l’écouteur du groupe de disponibilité, vous devez mettre à jour la chaîne de connexion utilisée pour vous connecter à l’écouteur du groupe de disponibilité Always On.Once you've configured your availability group listener, you'll need to update your connection string to connect to the Always On availability group listener. Cet écouteur route automatiquement le trafic entre votre application et le réplica prévu sans que vous ayez à mettre à jour manuellement la chaîne de connexion après chaque basculement.This will route traffic from your application automatically to the intended replica without having to manually update the connection string after every failover.

Se connecter au réplica principalConnect to the primary replica

Spécifiez le nom DNS de l’écouteur du groupe de disponibilité dans la chaîne de connexion pour établir la connexion au réplica principal en vue de l’accès en lecture-écriture.Specify the availability group listener DNS name in the connection string to connect to the primary replica for read-write access.

Par exemple, pour vous connecter au réplica principal dans SQL Server Management Studio par le biais de l’écouteur, entrez le nom DNS de l’écouteur dans le champ Nom du serveur :For example, to connect to the primary replica in SQL Server Management Studio through the listener, enter the listener DNS name in the server name field:

Se connecter à l’écouteur dans SSMS

Si le réplica principal est changé durant un basculement, les connexions à l’écouteur existantes sont déconnectées et les nouvelles connexions sont routées vers le nouveau réplica principal.During a failover, when the primary replica changes, existing connections to the listener are disconnected and new connections are routed to the new primary replica.

Voici un exemple de chaîne de connexion de base pour le fournisseur ADO.NET (System.Data.SqlClient) :An example of a basic connection string for the ADO.NET provider (System.Data.SqlClient):

Server=tcp: AGListener,1433;Database=MyDB;Integrated Security=SSPI  

Vous pouvez vérifier à quel réplica vous êtes actuellement connecté par le biais de l’écouteur en exécutant la commande Transact-SQL (T-SQL) suivante :You can verify which replica you're currently connected to through the listener by running the following Transact-SQL (T-SQL) command:

SELECT @@SERVERNAME

Exemple où SQLVM1 est configuré comme réplica principal :For example, when SQLVM1 is my primary replica:

Vérifier la connectivité du réplica

Vous pouvez toujours vous connecter directement à l’instance de SQL Server en spécifiant le nom d’instance du réplica principal ou secondaire au lieu d’utiliser l’écouteur du groupe de disponibilité.You can still connect directly to the instance of SQL Server using the instance name of the primary or secondary replica instead of using the availability group listener. Toutefois, dans ce cas, les nouvelles connexions ne sont plus routées automatiquement vers le nouveau réplica principal actuel.However, you will then lose the benefit of new connections being routed automatically to the new current primary replica. De plus, vous perdez l’avantage du routage en lecture seule, où les connexions spécifiées avec read-intent sont automatiquement routées vers le réplica secondaire accessible en lecture.Additionally, you will lose the benefit of read-only routing, where connections specified with read-intent are automatically routed to the readable secondary replica.

Se connecter à un réplica en lecture seuleConnect to a read-only replica

Le routage en lecture seule fait référence à la capacité de router automatiquement les connexions entrantes de l’écouteur vers un réplica secondaire accessible en lecture qui est configuré pour autoriser des charges de travail en lecture seule.Read-only routing refers to automatically routing incoming listener connections to a readable secondary replica that is configured to allow read-only workloads.

Les connexions sont automatiquement routées vers le réplica en lecture seule si les conditions suivantes sont remplies :Connections are automatically routed to the read-only replica if the following are true:

  • Au moins un réplica secondaire est configuré pour l’accès en lecture seule, et chaque réplica secondaire en lecture seule ainsi que le réplica principal sont configurés pour prendre en charge le routage en lecture seule.At least one secondary replica is set to read-only access, and each read-only secondary replica and the primary replica are configured to support read-only routing.

  • La chaîne de connexion référence une base de données impliquée dans le groupe de disponibilité.The connection string references a database involved in the Availability Group. Une alternative serait que la connexion utilisée ait la base de données configurée comme base de données par défaut.An alternative to this would be the login used in the connection has the database configured as its default database. Pour plus d’informations, consultez cet article sur le fonctionnement de l’algorithme avec le routage en lecture seule.For more information, see this article on how the algorithm works with read-only routing.

  • La chaîne de connexion fait référence à un écouteur de groupe de disponibilité, et l’intention de l’application de la connexion entrante est définie en lecture seule (par exemple, à l’aide du mot clé Application Intent=ReadOnly dans les chaînes de connexion ODBC ou OLEDB, ou dans les attributs ou les propriétés de connexion).The connection string references an availability group listener, and the application intent of the incoming connection is set to read-only (for example, by using the Application Intent=ReadOnly keyword in the ODBC or OLEDB connection strings or connection attributes or properties).

L’attribut d’intention d’application est stocké dans la session du client lors de la connexion. L’instance de SQL Server traite ensuite cette intention et détermine ce qu’il faut faire, selon la configuration du groupe de disponibilité et l’état en lecture-écriture actuel de la base de données cible dans le réplica secondaire.The application intent attribute is stored in the client's session during login and the instance of SQL Server will then process this intent and determine what to do according to the configuration of the availability group and the current read-write state of the target database in the secondary replica.

Par exemple, pour vous connecter à un réplica en lecture seule dans SQL Server Management Studio, sélectionnez Options dans la boîte de dialogue Se connecter au serveur, sélectionnez l’onglet Paramètres de connexion supplémentaires, puis spécifiez ApplicationIntent=ReadOnly dans la zone de texte :For example, to connect to a read-only replica using SQL Server Management Studio, select Options on the Connect to Server dialog box, select the Additional Connection Parameters tab, and then specify ApplicationIntent=ReadOnly in the text box:

Connexion en lecture seule dans SSMS

Voici un exemple de chaîne de connexion pour le fournisseur ADO.NET (System.Data.SqlClient) qui indique l’intention d’application en lecture seule :An example of a connection string for the ADO.NET provider (System.Data.SqlClient) that designates read-only application intent:

Server=tcp:AGListener;Database=AdventureWorks;Integrated Security=SSPI;ApplicationIntent=ReadOnly  

Pour plus d’informations, consultez Configurer l’accès en lecture seule sur un réplica de disponibilité (SQL Server)For more information, see Configure Read-Only Access on an Availability Replica (SQL Server)

Port non défini comme port par défautNon-default port

Quand vous créez un écouteur, vous spécifiez le port que l’écouteur doit utiliser.When creating your listener, you designate a port for the listener to use. Si le port est le port par défaut 1433, vous n’avez pas à spécifier un numéro de port pour vous connecter à l’écouteur.If the port is the default port of 1433, then you do not have to specify a port number when connecting to your listener. En revanche, si le port à utiliser n’est pas le port 1433, vous devez spécifier le port dans la chaîne de connexion au format listenername,port, comme dans cet exemple :However, if the port is not 1433, then the port must be specified in the connection string in the format of listenername,port such as:

Se connecter sur un port autre que celui par défaut

Voici un exemple de chaîne de connexion pour le fournisseur ADO.NET (System.Data.SqlClient) qui spécifie un port autre que le port par défaut pour l’écouteur :An example of a connection string for the ADO.NET provider (System.Data.SqlClient) that specifies a non-default port for the listener:

Server=tcp:AGListener,1445;Database=AdventureWorks;Integrated Security=SSPI 

Ignorer les écouteursBypass listeners

Alors que les écouteurs de groupe de disponibilité permettent la prise en charge de la redirection de basculement et le routage en lecture seule, les connexions clientes ne sont pas requises pour les utiliser.While availability group listeners enable support for failover redirection and read-only routing, client connections are not required to use them. Une connexion cliente peut également faire directement référence à l'instance de SQL Server au lieu de se connecter à l'écouteur du groupe de disponibilité.A client connection can also directly reference the instance of SQL Server instead of connecting to the availability group listener.

Pour l’instance de SQL Server, cela ne fait aucune différence si une connexion est établie à l’aide de l’écouteur du groupe de disponibilité ou avec un autre point de terminaison d’instance.To the instance of SQL Server, it is irrelevant whether a connection logs in using the availability group listener or using another instance endpoint. L'instance de SQL Server vérifie l'état de la base de données ciblée, puis autorise ou interdit la connectivité, selon la configuration du groupe de disponibilité et l'état actuel de la base de données sur l'instance.The instance of SQL Server will verify the state of the targeted database and either allow or disallow connectivity based on the configuration of the availability group and the current state of the database on the instance. Par exemple, si une application cliente se connecte directement à une instance de port SQL Server et se connecte à une base de données cible hébergée dans un groupe de disponibilité, et que la base de données cible se trouve à l’état primaire et en ligne, la connectivité aboutit.For example, if a client application connects directly to an instance of SQL Server port and connects to a target database hosted in an availability group, and the target database is in primary state and online, then connectivity will succeed. Si la base de données cible est hors connexion ou dans un état de transition, la connectivité à la base de données échoue.If the target database is offline or in a transitional state, connectivity to the database will fail.

Autrement, lors d'une migration depuis une mise en miroir de bases de données vers Groupes de disponibilité Always OnAlways On availability groups, les applications peuvent spécifier la chaîne de connexion de mise en miroir de bases de données dans la mesure où il existe un seul réplica secondaire et qu'il n'autorise pas les connexions utilisateur.Alternatively, while migrating from database mirroring to Groupes de disponibilité Always OnAlways On availability groups, applications can specify the database mirroring connection string as long as only one secondary replica exists and it disallows user connections.

Chaînes de connexion de mise en miroir de bases de donnéesDatabase mirroring connection strings

Si un groupe de disponibilité possède uniquement un réplica secondaire et est configuré avec ALLOW_CONNECTIONS = READ_ONLY ou ALLOW_CONNECTIONS = NONE pour le réplica secondaire, les clients peuvent se connecter au réplica principal à l'aide d'une chaîne de connexion de mise en miroir de bases de données.If an availability group possesses only one secondary replica and is configured with either ALLOW_CONNECTIONS = READ_ONLY or ALLOW_CONNECTIONS = NONE for the secondary replica, clients can connect to the primary replica by using a database mirroring connection string. Cette approche peut être utile lors de la migration d'une application existante depuis la mise en miroir de bases de données vers un groupe de disponibilité, tant que vous limitez le groupe de disponibilité à deux réplicas de disponibilité (un réplica principal et un réplica secondaire).This approach can be useful while migrating an existing application from database mirroring to an availability group, as long as you limit the availability group to two availability replicas (a primary replica and one secondary replica). Si vous ajoutez des réplicas secondaires supplémentaires, vous devrez créer un écouteur de groupe de disponibilité pour le groupe de disponibilité et mettre à jour vos applications pour utiliser le nom DNS de l'écouteur du groupe de disponibilité.If you add additional secondary replicas, you will need to create an availability group listener for the availability group and update your applications to use the availability group listener DNS name.

Lors de l'utilisation de chaînes de connexion de mise en miroir de bases de données, le client peut soit utiliser SQL ServerSQL Server Native Client, soit le fournisseur de données .NET Framework pour SQL ServerSQL Server.When using database mirroring connection strings, the client can use either SQL ServerSQL Server Native Client or .NET Framework Data Provider for SQL ServerSQL Server. La chaîne de connexion fournie par un client doit fournir au minimum le nom d'une instance de serveur, le nom du partenaire initial, pour identifier l'instance de serveur qui héberge initialement le réplica de disponibilité auquel vous envisagez de vous connecter.The connection string provided by a client must minimally supply the name of one server instance, the initial partner name, to identify the server instance that initially hosts the availability replica to which you intend to connect. Éventuellement, la chaîne de connexion peut également fournir le nom d'une autre instance de serveur, le nom du partenaire de basculement, pour identifier l'instance de serveur qui héberge initialement le réplica secondaire comme nom de partenaire de basculement.Optionally, the connection string can also supply the name of another server instance, the failover partner name, to identify the server instance that initially hosts the secondary replica as the failover partner name.

Pour plus d’informations sur les chaînes de connexion de mise en miroir de base de données, consultez Connecter des clients à une session de mise en miroir de bases de données (SQL Server).For more information about database mirroring connection strings, see Connect Clients to a Database Mirroring Session (SQL Server).

Basculements de plusieurs sous-réseauxMulti-subnet failovers

Si vous utilisez des bibliothèques clientes qui prennent en charge l’option de connexion MultiSubnetFailover dans la chaîne de connexion, vous pouvez optimiser le basculement du groupe de disponibilité vers un sous-réseau différent en définissant MultiSubnetFailover sur « True » ou « Yes », selon la syntaxe du fournisseur que vous utilisez.If you're using client libraries that support the MultiSubnetFailover connection option in the connection string, you can optimize availability group failover to a different subnet by setting MultiSubnetFailover to "True" or "Yes", depending on the syntax of the provider you are using.

Notes

Nous vous recommandons de définir ce paramètre à la fois pour les connexions à un seul ou à plusieurs sous-réseaux aux écouteurs de groupes de disponibilité et aux noms d'instance de cluster de basculement SQL Server.We recommend this setting for both single and multi-subnet connections to availability groups listeners and to SQL Server Failover Cluster Instance names. L'activation de cette option ajoute des optimisations supplémentaires, même pour les scénarios de sous-réseau unique.Enabling this option adds additional optimizations, even for single-subnet scenarios.

L’option de connexion MultiSubnetFailover fonctionne uniquement avec le protocole réseau TCP et elle est prise en charge uniquement lors de la connexion à un écouteur de groupe de disponibilité et pour n’importe quel nom de réseau virtuel se connectant à SQL Server 2019 (15.x)SQL Server 2019 (15.x).The MultiSubnetFailover connection option only works with the TCP network protocol and is only supported when connecting to an availability group listener and for any virtual network name connecting to SQL Server 2019 (15.x)SQL Server 2019 (15.x).

Voici un exemple de chaîne de connexion du fournisseur ADO.NET (System.Data.SqlClient) qui permet le basculement de plusieurs sous-réseaux :An example of the ADO.NET provider (System.Data.SqlClient) connection string that enables multi-subnet failover is as follows:

Server=tcp:AGListener,1433;Database=AdventureWorks;Integrated Security=SSPI; MultiSubnetFailover=True  

L’option de connexion MultiSubnetFailover doit prendre la valeur True même si le groupe de disponibilité s’étend sur un seul sous-réseau.The MultiSubnetFailover connection option should be set to True even if the availability group only spans a single subnet. Cela vous permet de préconfigurer de nouveaux clients afin de prendre en charge la future couverture de sous-réseaux, sans recourir à de futures modifications de la chaîne de connexion du client. Par ailleurs, cela permet d'optimiser les performances de basculement pour les basculements au sein d'un seul sous-réseau.This allows you to preconfigure new clients to support future spanning of subnets without any need for future client connection string changes and also optimizes failover performance for single subnet failovers. Alors que l’option de connexion MultiSubnetFailover n’est pas obligatoire, elle offre l’avantage d’un basculement de sous-réseau plus rapide.While the MultiSubnetFailover connection option is not required, it does provide the benefit of a faster subnet failover. Cela est dû au fait que le pilote client essaie d'ouvrir un socket TCP pour chaque adresse IP en parallèle associée au groupe de disponibilité.This is because the client driver will attempt to open up a TCP socket for each IP address in parallel associated with the availability group. Le pilote client attend une réponse correcte de la première adresse IP et, ceci fait, l'utilise pour la connexion.The client driver will wait for the first IP to respond with success and once it does, will then use it for the connection.

Écouteurs et certificats TLS/SSLListeners & TLS/SSL certificates

Lors de la connexion à un écouteur de groupe de disponibilité, si les instances participantes de SQL Server utilisent des certificats TLS/SSL en même temps que le chiffrement de session, le pilote client de la connexion doit prendre en charge le nom SAN (Subject Alternate Name) dans le certificat TLS/SSL afin de forcer le chiffrement.When connecting to an availability group listener, if the participating instances of SQL Server use TLS/SSL certificates in conjunction with session encryption, the connecting client driver will need to support the Subject Alternate Name in the TLS/SSL certificate in order to force encryption. La prise en charge de pilotes SQL Server pour le nom SAN de certificat est planifiée pour ADO.NET (SqlClient), Microsoft JDBC et SQL Native Client (SNAC).SQL Server driver support for certificate Subject Alternative Name is planned for ADO.NET (SqlClient), Microsoft JDBC, and SQL Native Client (SNAC).

Un certificat X.509 doit être configuré pour chaque nœud serveur participant dans le cluster de basculement, avec une liste de tous les écouteurs de groupe de disponibilité définis dans le nom SAN du certificat.An X.509 certificate must be configured for each participating server node in the failover cluster with a list of all availability group listeners set in the Subject Alternate Name of the certificate.

Le format des valeurs du certificat est le suivant :The format for the certificate values is:

CN = Server.FQDN  
SAN = Server.FQDN,Listener1.FQDN,Listener2.FQDN

Par exemple, si vous avez les valeurs suivantes :For example, you have the following values:

Servername: Win2019   
Instance: SQL2019   
AG: AG2019   
Listener: Listener2019   
Domain: contoso.com  (which is also the FQDN)

Pour un cluster WSFC qui a un seul groupe de disponibilité, le certificat doit avoir le nom de domaine complet (FQDN) du serveur et le nom de domaine complet de l’écouteur :For a WSFC that has a single availability group, the certificate should have the fully qualified domain name (FQDN) of the server, and the FQDN of the listener:

CN: Win2019.contoso.com
SAN: Win2019.contoso.com, Listener2019.contoso.com 

Avec cette configuration, vos connexions seront chiffrées lors de la connexion à l’instance (WIN2019\SQL2019) ou à l’écouteur (Listener2019).With this configuration, your connections will be encrypted when connecting to the instance (WIN2019\SQL2019), or the the listener (Listener2019).

En fonction de la configuration de la mise en réseau, il existe un petit sous-ensemble de clients qui peuvent également avoir besoin d’ajouter le NetBIOS au réseau SAN.Depending on how networking is configured, there is a small subset of customers that may need to add the NetBIOS to the SAN as well. Dans ce cas, les valeurs du certificat doivent être :In which case, the certificate values should be:

CN: Win2019.contoso.com
SAN: Win2019,Win2019.contoso.com,Listener2019,Listener2019.contoso.com

Si le cluster WSFC dispose de trois écouteurs de groupe de disponibilité, par exemple : Listener1, Listener2, Listener3If the WSFC has three availability group listeners, such as: Listener1, Listener2, Listener3

Les valeurs de certificat doivent être les suivantes :Then the certificate values should be:

CN: Win2019.contoso.com
SAN: Win2019.contoso.com,Listener1.contoso.com,Listener2.contoso.com,Listener3.contoso.com

Écouteurs et Kerberos (SPN)Listeners and Kerberos (SPNs)

Un administrateur de domaine doit configurer un nom de principal de service (SPN) dans Active Directory pour chaque écouteur du groupe de disponibilité afin d’activer Kerberos pour les connexions clientes vers l’écouteur.A domain administrator must configure a Service Principal Name (SPN) in Active Directory for each availability group listener to enable Kerberos for client connections to the listener. Lors de l’inscription du SPN, vous devez utiliser le compte de service de l’instance de serveur qui héberge le réplica de disponibilité.When registering the SPN, you must use the service account of the server instance that hosts the availability replica. Pour que le SPN fonctionne sur tous les réplicas, le même compte de service doit être utilisé pour toutes les instances du cluster WSFC qui héberge le groupe de disponibilité.For the SPN to work across all replicas, the same service account must be used for all instances in the WSFC cluster that hosts the availability group.

Utilisez l’outil de ligne de commande setspn Windows pour configurer le SPN.Use the setspn Windows command line tool to configure the SPN. Par exemple, pour configurer un SPN pour un groupe de disponibilité nommé AG1listener.Adventure-Works.com hébergé dans un ensemble d'instances de SQL Server, toutes configurées pour s'exécuter sous le compte de domaine corp\svclogin2:For example to configure an SPN for an availability group named AG1listener.Adventure-Works.com hosted on a set of instances of SQL Server all configured to run under the domain account corp\svclogin2:

setspn -A MSSQLSvc/AG1listener.Adventure-Works.com:1433 corp\svclogin2  

Pour plus d'informations sur l'inscription manuelle d'un SPN pour SQL Server, consultez Inscrire un nom de principal du service pour les connexions Kerberos.For more information about manual registration of a SPN for SQL Server, see Register a Service Principal Name for Kerberos Connections.

Étapes suivantesNext steps

Une fois que vous êtes connecté à l’écouteur, vous pouvez décharger les charges de travail en lecture seule et les sauvegardes vers le réplica secondaire afin d’améliorer les performances.Once you've successfully connected to the listener, consider offloading read-only workloads and backups to the secondary replica to improve performance. Vous pouvez également examiner différentes stratégies de supervision des groupes de disponibilité pour garantir l’intégrité de votre groupe de disponibilité.You can also review various availability group monitoring strategies to ensure the health of your availability group.

Pour plus d’informations sur les groupes de disponibilité, consultez Vue d’ensemble des groupes de disponibilité Always On (SQL Server).For more information about availability groups, see the Overview of Always On Availability Groups (SQL Server).