Écouteurs, connectivité client et basculement d'applicationListeners, Client Connectivity, Application Failover

Cette rubrique contient des informations sur les éléments à prendre en compte en matière de connectivité client Groupes de disponibilité Always OnAlways On availability groups et de fonctionnalité de basculement d'application.This topic contains information about considerations for Groupes de disponibilité Always OnAlways On availability groups client connectivity and application-failover functionality.

Note

Pour la majorité des configurations habituelles d'écouteur, vous pouvez créer le premier écouteur de groupe de disponibilité simplement à l'aide d'instructions Transact-SQLTransact-SQL ou d'applets de commande PowerShell.For the majority of the common listener configurations, you can create the first availability group listener simply by using Transact-SQLTransact-SQL statements or PowerShell cmdlets. Pour plus d'informations, consultez Tâches associées, plus loin dans cette rubrique.For more information, see Related Tasks, later in this topic.

Dans cette rubrique :In This Topic:

Écouteurs de groupe de disponibilité Availability Group Listeners

Vous pouvez fournir la connectivité client à la base de données d'un groupe de disponibilité donné en créant un écouteur de groupe de disponibilité.You can provide client connectivity to the database of a given availability group by creating an availability group listener. Un écouteur de groupe de disponibilité est un nom de réseau virtuel (VNN) auquel les clients peuvent se connecter afin d’accéder à une base de données dans un réplica principal ou secondaire d’un groupe de disponibilité Always On.An availability group listener is a virtual network name (VNN) to which clients can connect in order to access a database in a primary or secondary replica of an Always On availability group. Un écouteur de groupe de disponibilité permet à un client de se connecter à un réplica de disponibilité sans connaître le nom de l'instance physique de SQL Server à laquelle il se connecte.An availability group listener enables a client to connect to an availability replica without knowing the name of the physical instance of SQL Server to which the client is connecting. Il est inutile de modifier la chaîne de connexion du client pour se connecter à l'emplacement actuel du réplica principal.The client connection string does not need to be modified to connect to the current location of the current primary replica.

Un écouteur de groupe de disponibilité consiste en un nom d'écouteur DNS (Domain Name System), en une désignation de port d'écoute et en une ou plusieurs adresses IP.An availability group listener consists of a Domain Name System (DNS) listener name, listener port designation, and one or more IP addresses. Seul le protocole TCP est pris en charge par l'écouteur de groupe de disponibilité.Only the TCP protocol is supported by availability group listener. Le nom DNS de l'écouteur doit également être unique dans le domaine et dans NetBIOS.The DNS name of the listener must also be unique in the domain and in NetBIOS. Lorsque vous créez un nouvel écouteur de groupe de disponibilité, il devient une ressource de cluster avec un nom de réseau virtuel (VNN) associé, une adresse IP virtuelle (VIP) et une dépendance de groupe de disponibilité.When you create a new availability group listener it becomes a resource in a cluster with an associated virtual network name (VNN), virtual IP (VIP), and availability group dependency. Un client utilise le nom DNS pour résoudre le nom VNN en plusieurs adresses IP et tente ensuite de se connecter à chaque adresse, jusqu'à ce qu'une demande de connexion réussisse ou jusqu'à ce que la requête de connexion expire.A client uses DNS to resolve the VNN into multiple IP addresses and then tries to connect to each address, until a connection request succeeds or until the connection requests time out.

Si le routage en lecture seule est configuré pour un ou plusieurs réplicas secondaires accessibles en lecture, les connexions clientes d’intention de lecture du réplica principal sont redirigées vers un réplica secondaire accessible en lecture.If read-only routing is configured for one or more readable secondary replicas, read-intent client connections to the primary replica are redirected to a readable secondary replica. Par ailleurs, si le réplica principal est mis hors connexion sur une instance de SQL Server et un nouveau réplica principal passe en ligne sur une autre instance de SQL Server, l'écouteur de groupe de disponibilité permet aux clients de se connecter au nouveau réplica principal.Also, if the primary replica goes offline on one instance of SQL Server, and a new primary replica comes online on another instance of SQL Server, the availability group listener enables clients to connect to the new primary replica.

Pour obtenir des informations essentielles sur les écouteurs de groupe de disponibilité, consultez Créer ou configurer un écouteur de groupe de disponibilité (SQL Server).For essential information about availability group listeners, see Create or Configure an Availability Group Listener (SQL Server).

Dans cette section :In This Section:

Configuration de l'écouteur de groupe de disponibilité Availability Group Listener Configuration

Un écouteur de groupe de disponibilité est défini par les élément suivants :An availability group listener is defined by the following:

Un nom DNS unique.A unique DNS name
Ce nom est aussi appelé un nom de réseau virtuel (VNN).This is also known as a Virtual Network Name (VNN). Les règles d'attribution de noms Active Directory pour les noms d'hôte DNS s'appliquent.Active Directory naming rules for DNS host names apply. Pour plus d'informations, consultez l'article Conventions d'affectation de noms dans Active Directory pour les ordinateurs, les domaines, les sites et les unités d'organisation de la Base de connaissances.For more information, see the Naming conventions in Active Directory for computers, domains, sites, and OUs KB article.

Une ou plusieurs adresses IP virtuelles (VIP)One or more Virtual IP addresses (VIPs)
Les adresses IP virtuelles sont configurées pour un ou plusieurs sous-réseaux vers lesquels le groupe de disponibilité peut basculer.VIPs are configured for one or more subnets to which the availability group can failover.

Configuration de l'adresse IPIP address configuration
Pour un écouteur de groupe de disponibilité donné, l'adresse IP utilise le protocole DHCP (Dynamic Host Configuration Protocol) ou une ou plusieurs adresses IP statiques.For a given availability group listener, the IP address uses either Dynamic Host Configuration Protocol (DHCP) or one or more static IP addresses.

  • Protocole DHCP (Dynamic Host Configuration Protocol)Dynamic Host Configuration Protocol (DHCP)

    Vous pouvez configurer toutes les adresses IP d'écouteur de groupe de disponibilité en vue d'utiliser le protocole DHCP (Dynamic Host Configuration Protocol) si un groupe de disponibilité réside sur un même sous-réseau.If an availability group resides on a single subnet, you can configure all the availability group listener IP addresses to use DHCP. Pour les environnements de préproduction, le protocole DHCP permet une installation facile pour un groupe de disponibilité qui n'a pas besoin de la fonctionnalité de récupération d'urgence vers un site distant sur un sous-réseau distinct.For pre-production environments, DHCP offers an easy setup for an availability group that does not require disaster recovery to a remote site on a separate subnet. Toutefois, nous déconseillons d'utiliser DHCP en même temps qu'un écouteur de groupe de disponibilité dans un environnement de production.However, you should not use DHCP in conjunction with an availability group listener in a production environment. En effet, en cas d'arrêt du système, si le bail IP DHCP expire, il faudra consacrer du temps supplémentaire pour réinscrire la nouvelle adresse IP DHCP associée au nom DNS de l'écouteur.This is because, in the event of down time, if the DHCP IP lease expires, extra time is required to re-register the new DHCP IP address associated with the listener DNS name. Ce temps supplémentaire va provoquer l'échec de la connexion cliente.The extra time will cause client-connection failure.

  • Adresses IP statiquesStatic IP addresses

    Dans les environnements de production, nous conseillons que les écouteurs de groupe de disponibilité utilisent des adresses IP statiques.In production environments, we recommend that availability group listeners use static IP addresses. De plus, dans le cas où vos groupes de disponibilité s'étendent sur plusieurs sous-réseaux dans un domaine de plusieurs sous-réseaux, un écouteur de groupe de disponibilité doit utiliser des adresses IP statiques.Furthermore, where availability groups extend across subnets in a multi-subnet domain, an availability group listener must use static IP addresses.

    Les configurations réseau hybrides et le recours au protocole DHCP sur plusieurs sous-réseaux ne sont pas pris en charge pour les écouteurs de groupe de disponibilité.Hybrid network configurations and DHCP across subnets are not supported for availability group listeners. Cela est dû au fait que, lorsqu'un basculement a lieu, une adresse IP dynamique peut expirer ou être libérée, ce qui compromet la haute disponibilité globale.This is because when a failover happens, a dynamic IP might expire or be released, which jeopardizes overall high availability.

Sélection d'un port d'écoute de groupe de disponibilité Selecting an Availability Group Listener Port

Lors de la configuration d'un écouteur de groupe de disponibilité, vous devez indiquer un port.When configuring an availability group listener, you must designate a port. Vous pouvez configurer le port par défaut sur 1433, afin de permettre de simplifier les chaînes de connexion du client.You can configure the default port to 1433 in order to allow for simplicity of the client connection strings. Si vous utilisez 1433, vous n'avez pas besoin d'indiquer un numéro de port dans une chaîne de connexion.If using 1433, you do not need to designate a port number in a connection string. De plus, étant donné que chaque écouteur de groupe de disponibilité portera un nom de réseau virtuel distinct, chaque écouteur de groupe de disponibilité configuré sur un même WSFC pourra être configuré pour référencer le même port par défaut 1433.Also, since each availability group listener will have a separate virtual network name, each availability group listener configured on a single WSFC can be configured to reference the same default port of 1433.

Vous pouvez également indiquer un port d'écoute non standard ; toutefois, cela signifie que vous devrez également spécifier explicitement un port cible dans votre chaîne de connexion lors de chaque connexion à l'écouteur de groupe de disponibilité.You can also designate a non-standard listener port; however this means that you will also need to explicitly specify a target port in your connection string whenever connecting to the availability group listener. Vous devrez également ouvrir l'autorisation sur le pare-feu pour le port non standard.You will also need to open permission on the firewall for the non-standard port.

Si vous utilisez le port par défaut 1433 comme nom VNN de l'écouteur du groupe de disponibilité, vous devez toujours vérifier qu'aucun autre service sur le nœud de cluster n'utilise ce port ; dans le cas contraire, cela provoquerait un conflit de ports.If you use the default port of 1433 for availability group listener VNNs, you will still need to ensure that no other services on the cluster node are using this port; otherwise this would cause a port conflict.

Si l'une des instances de SQL Server écoute déjà sur le port TCP 1433 par l'intermédiaire de l'écouteur d'instance et qu'il n'existe aucun autre service (instances supplémentaires de SQL Server comprises) sur l'ordinateur écoutant sur le port 1433, cela ne provoque pas un conflit de ports avec l'écouteur du groupe de disponibilité.If one of the instances of SQL Server is already listening on TCP port 1433 via the instance listener and there are no other services (including additional instances of SQL Server) on the computer listening on port 1433, this will not cause a port conflict with the availability group listener. Cela est dû au fait que l'écouteur du groupe de disponibilité peut partager le même port TCP au sein du même processus de service.This is because the availability group listener can share the same TCP port inside the same service process. Toutefois, plusieurs instances de SQL Server (côte à côte) ne doivent pas être configurées pour écouter sur le même port.However multiple instances of SQL Server (side-by-side)should not be configured to listen on the same port.

Utilisation d'un écouteur pour se connecter au réplica principal Using a Listener to Connect to the Primary Replica

Pour utiliser un écouteur de groupe de disponibilité pour la connexion au réplica principal en vue de l'accès en lecture-écriture, la chaîne de connexion spécifie le nom DNS de l'écouteur de groupe de disponibilité.To use an availability group listener to connect to the primary replica for read-write access, the connection string specifies the availability group listener DNS name. Si un réplica principal de groupe de disponibilité se transforme en nouveau réplica, les connexions existantes qui utilisent le nom réseau d'un écouteur de groupe de disponibilité sont déconnectées.If an availability group primary replica changes to a new replica, existing connections that use an availability group listener's network name are disconnected. Les nouvelles connexions à l'écouteur du groupe de disponibilité sont ensuite dirigées vers le nouveau réplica principal.New connections to the availability group listener are then directed 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) is as follows:

Server=tcp: AGListener,1433;Database=MyDB;IntegratedSecurity=SSPI  

Vous pouvez néanmoins choisir de référencer directement l'instance du nom SQL Server des réplicas principaux ou secondaires au lieu d'utiliser le nom du serveur de l'écouteur du groupe de disponibilité ; toutefois, si vous choisissez d'agir ainsi, les nouvelles connexions ne seront plus dirigées automatiquement vers le réplica principal actuel.You can still choose to directly reference the instance of SQL Server name of the primary or secondary replicas instead of using the availability group listener server name, however if you choose to do so you will lose the benefit of new connections being directed automatically to the current primary replica. Vous perdrez également l'avantage du routage en lecture seule.You will also lose the benefit of read-only routing.

Utilisation d'un écouteur pour se connecter à un réplica secondaire en lecture seule (routage en lecture seule) Using a Listener to Connect to a Read-Only Secondary Replica (Read-Only Routing)

Leroutage en lecture seule fait référence à la capacité de SQL ServerSQL Server d’acheminer les connexions entrantes à un écouteur de groupe de disponibilité vers un réplica secondaire qui est configuré pour autoriser des charges de travail en lecture seule.Read-only routing refers to the ability of SQL ServerSQL Server to route incoming connections to an availability group listener to a secondary replica that is configured to allow read-only workloads. Une connexion entrante faisant référence à un nom d'écouteur de groupe de disponibilité peut automatiquement être acheminée vers un réplica en lecture seule si les conditions suivantes sont réunies :An incoming connection referencing an availability group listener name can automatically be routed to a read-only replica if the following are true:

  • Au moins un réplica secondaire est défini sur l'accès en lecture seule, et chaque réplica secondaire en lecture seule et 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. Pour plus d’informations, consultez Pour configurer des réplicas de disponibilité pour le routage en lecture seule, plus loin dans cette section.For more information, see To Configure Availability Replicas for Read-Only Routing, later in this section.

  • 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). Pour plus d’informations, consultez Intention de l’application en lecture seule et routage en lecture seule, plus loin dans cette section.For more information, see Read-Only Application Intent and Read-Only Routing, later in this section.

Pour configurer des réplicas de disponibilité pour le routage en lecture seule To Configure Availability Replicas for Read-Only Routing

Un administrateur de base de données doit configurer les réplicas de disponibilité comme suit :A database administrator must configure the availability replicas as follows:

  1. Pour chaque réplica de disponibilité à configurer comme réplica secondaire accessible en lecture, un administrateur de base de données doit configurer les paramètres suivants, qui prennent effet uniquement sous le rôle secondaire :For each availability replica that you want to configure as a readable secondary replica, a database administrator must configure the following settings, which take effect only under the secondary role:

    • L'accès à la connexion doit avoir la valeur « tous » ou « lecture seule ».Connection access must be set to "all" or "read only".

    • L'URL de routage en lecture seule doit être spécifiée.The read-only routing URL must be specified.

  2. Pour chacun de ces réplicas, une liste de routage en lecture seule doit être spécifiée pour le rôle principal.For each of these replicas, a read-only routing list must be specified for the primary role. Spécifiez un ou plusieurs noms de serveur comme cibles de routage.Specify one or more server names as routing targets.

Intention de l'application en lecture seule et routage en lecture seule Read-Only Application Intent and Read-Only Routing

La propriété de chaîne de connexion de l'intention d'application exprime le souhait de l'application cliente d'être redirigée vers une version en lecture-écriture ou en lecture seule d'une base de données de groupe de disponibilité.The application intent connection string property expresses the client application’s request to be directed either to a read-write or read-only version of an availability group database. Pour utiliser le routage en lecture seule, un client doit utiliser une intention d'application en lecture seule dans la chaîne de connexion pour la connexion à l'écouteur de groupe de disponibilité.To use read-only routing, a client must use an application intent of read-only in the connection string when connecting to the availability group listener. Sans intention d'application en lecture seule, les connexions à l'écouteur de groupe de disponibilité sont dirigées vers la base de données sur le réplica principal.Without the read-only application intent, connections to the availability group listener are directed to the database on the primary replica.

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.

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 is as follows:

Server=tcp:AGListener,1433;Database=AdventureWorks;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly  

Dans cet exemple de chaîne de connexion, le client tente de se connecter à un écouteur de groupe de disponibilité nommé AGListener sur le port 1433 (vous pouvez aussi omettre le port si l'écouteur du groupe de disponibilité écoute sur le port 1433).In this connection string example, the client is attempting to connect to an availability group listener named AGListener on port 1433 (you may also omit the port if the availability group listener is listening on 1433). La chaîne de connexion a la propriété ApplicationIntent définie sur ReadOnly, ce qui en fait une chaîne de connexion d’intention de lecture.The connection string has the ApplicationIntent property set to ReadOnly, making this a read-intent connection string. Sans ce paramètre, le serveur n'aurait pas essayé un routage en lecture seule de la connexion.Without this setting, the server would not have attempted a read-only routing of the connection.

La base de données primaire du groupe de disponibilité traite la demande de routage en lecture seule entrante et tente de localiser un réplica en ligne et en lecture seule joint au réplica principal et configuré pour le routage en lecture seule.The primary database of the availability group processes the incoming read-only routing request and attempts to locate an online, read-only replica that is joined to the primary replica and is configured for read-only routing. Le client reçoit les informations de connexion depuis le serveur de réplica principal et se connecte au réplica en lecture seule identifié.The client receives back connection information from the primary replica server and connects to the identified read-only replica.

Notez que l'intention de l'application peut être envoyée depuis un pilote client vers une instance de bas niveau de SQL Server.Note that the application intent can be sent from a client driver to a down-level instance of SQL Server. Dans ce cas, l'intention de l'application en lecture seule est ignorée et la connexion se déroule normalement.In this case, application intent of read-only is ignored and the connection proceeds as normal.

Vous pouvez contourner le routage en lecture seule en ne définissant pas la propriété de connexion d’intention d’application avec la valeur ReadOnly (en l’absence de spécification, la valeur par défaut est ReadWrite pendant la connexion) ou en effectuant une connexion directe à l’instance du réplica principal de SQL Server au lieu d’utiliser le nom de l’écouteur du groupe de disponibilité.You can bypass read-only routing by not setting the application intent connection property to ReadOnly (when not designated, the default is ReadWrite during login) or by connecting directly to the primary replica instance of SQL Server instead of using the availability group listener name. Le routage en lecture seule n'a pas lieu non plus si vous vous connectez directement à un réplica en lecture seule.Read-only routing will also not occur if you connect directly to a read-only replica.

Contournement des écouteurs de groupe de disponibilité Bypassing Availability Group 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 dans l'état primaire et en ligne, la connectivité aboutit.For example, if a client application connects directly to a 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. Pour plus d’informations, consultez Utilisation des chaînes de connexion de mise en miroir de bases de données avec des groupes de disponibilité, plus loin dans cette section.For more information, see Using Database-Mirroring Connection Strings with Availability Groups, later in this section.

Utilisation des chaînes de connexion de mise en miroir de bases de données avec des groupes de disponibilité Using Database-Mirroring Connection Strings with Availability Groups

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).

Comportement des connexions clientes lors du basculement Behavior of Client Connections on Failover

Lorsqu'un basculement de groupe de disponibilité se produit, les connexions persistantes existantes au groupe de disponibilité prennent fin et le client doit établir une nouvelle connexion afin de continuer à utiliser la même base de données primaire ou base de données secondaire en lecture seule.When an availability group failover occurs, existing persistent connections to the availability group are terminated and the client must establish a new connection in order to continue working with the same primary database or read-only secondary database. Lorsqu'un basculement se produit côté serveur, la connectivité au groupe de disponibilité peut échouer, forçant l'application cliente à réessayer une nouvelle connexion jusqu'à ce que le serveur principal soit entièrement remis en ligne.While a failover is occurring on the server side, connectivity to the availability group may fail, forcing the client application to retry connecting until the primary is brought fully back online.

Si le groupe de disponibilité revient en ligne pendant une tentative de connexion d'une application cliente, mais avant l'expiration du délai d'attente de connexion, le pilote client peut se connecter avec succès au cours de l'une de ses tentatives de reprise interne et aucune erreur ne sera visible dans l'application dans ce cas.If the availability group comes back online during a client application’s connection attempt but before the connect timeout period, the client driver may successfully connect during one of its internal retry attempts and no error will be surfaced to the application in this case.

Prise en charge de basculements de sous-réseaux multiples de groupe de disponibilité Supporting Availability Group Multi-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 are 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.

Note

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 2017SQL Server 2017.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 2017SQL Server 2017.

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;IntegratedSecurity=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 de groupe de disponibilité et certificats SSL Availability Group Listeners and SSL Certificates

Lors de la connexion à un écouteur de groupe de disponibilité, si les instances participantes de SQL Server utilisent des certificats 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 SSL afin de forcer le chiffrement.When connecting to an availability group listener, if the participating instances of SQL Server use SSL certificates in conjunction with session encryption, the connecting client driver will need to support the Subject Alternate Name in the 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.A 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.

Par exemple, si le WSFC dispose de trois écouteurs de groupe de disponibilité avec les noms AG1_listener.Adventure-Works.com, AG2_listener.Adventure-Works.comet AG3_listener.Adventure-Works.com, le nom SAN du certificat doit être défini comme suit :For example, if the WSFC has three availability group listeners with the names AG1_listener.Adventure-Works.com, AG2_listener.Adventure-Works.com, and AG3_listener.Adventure-Works.com, the Subject Alternative Name for the certificate should be set as follows:

CN = ServerFQDN  
SAN = ServerFQDN,AG1_listener.Adventure-Works.com, AG2_listener.Adventure-Works.com, AG3_listener.Adventure-Works.com  

Écouteurs de groupe de disponibilité et noms de principal de serveur (SPN) Availability Group Listeners and Server Principal Names (SPNs)

Un nom de principal de serveur (SPN) doit être configuré dans Active Directory par un administrateur de domaine pour chaque nom d'écouteur de groupe de disponibilité afin d'activer Kerberos pour la connexion cliente à l'écouteur du groupe de disponibilité.A Server Principal Name (SPN) must be configured in Active Directory by a domain administrator for each availability group listener name in order to enable Kerberos for the client connection to the availability group listener. Lors de l’inscription du nom 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 Register a Service Principal Name for Kerberos Connections.For more information about manual registration of a SPN for SQL Server, see Register a Service Principal Name for Kerberos Connections.

Voir aussiSee Also

Vue d’ensemble des groupes de disponibilité Always On (SQL Server) Overview of Always On Availability Groups (SQL Server)
Connectivité client Always On (SQL Server) Always On Client Connectivity (SQL Server)
À propos de l’accès de la connexion client aux réplicas de disponibilité (SQL Server) About Client Connection Access to Availability Replicas (SQL Server)
Secondaires actifs : réplicas secondaires lisibles (groupes de disponibilité Always On) Active Secondaries: Readable Secondary Replicas (Always On Availability Groups)
Connecter des clients à une session de mise en miroir de bases de données (SQL Server)Connect Clients to a Database Mirroring Session (SQL Server)