Listener, connettività client e failover dell'applicazioneListeners, Client Connectivity, Application Failover

In questo argomento sono contenute informazioni sulla funzionalità di failover delle applicazioni e sulla connettività client di Gruppi di disponibilità Always OnAlways On availability groups .This topic contains information about considerations for Gruppi di disponibilità Always OnAlways On availability groups client connectivity and application-failover functionality.

Nota

Per la maggior parte delle configurazioni comuni del listener, è possibile creare il listener del primo gruppo di disponibilità tramite cmdlet di PowerShell o istruzioni Transact-SQLTransact-SQL .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. Per ulteriori informazioni, vedere Attività correlatepiù avanti in questo argomento.For more information, see Related Tasks, later in this topic.

Contenuto dell'argomentoIn This Topic:

Listener del gruppo di disponibilità Availability Group Listeners

È possibile fornire la connettività client al database di un determinato gruppo di disponibilità creando un listener del gruppo di disponibilità.You can provide client connectivity to the database of a given availability group by creating an availability group listener. Un listener del gruppo di disponibilità è un nome di rete virtuale (VNN, Virtual Network Name) a cui i client possono connettersi per accedere a un database in una replica primaria o secondaria di un gruppo di 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 listener del gruppo di disponibilità consente a un client di connettersi a una replica di disponibilità senza conoscere il nome dell'istanza fisica di SQL Server a cui il client si deve connettere.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. Non è necessario modificare la stringa di connessione client per connettersi al percorso corrente della replica primaria corrente.The client connection string does not need to be modified to connect to the current location of the current primary replica.

Un listener del gruppo di disponibilità è composto da un nome listener DNS, dal numero di porta e da uno o più indirizzi IP.An availability group listener consists of a Domain Name System (DNS) listener name, listener port designation, and one or more IP addresses. Solo il protocollo TCP è supportato dal listener del gruppo di disponibilità.Only the TCP protocol is supported by availability group listener. È inoltre necessario che il nome DNS del listener sia univoco nel dominio e in NetBIOS.The DNS name of the listener must also be unique in the domain and in NetBIOS. Alla sua creazione, il listener del gruppo di disponibilità diventa una risorsa di un cluster con un nome di rete virtuale (VNN) e un indirizzo IP virtuale (VIP) associati, oltre alla dipendenza del gruppo di 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 utilizza il DNS per risolvere il VNN in più indirizzi IP e quindi tenta di connettersi a ogni indirizzo, fino a che una richiesta di connessione riesce o fino a che le richieste di connessione non scadranno.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.

Se il routing di sola lettura viene configurato per una o più repliche secondarie leggibili, le connessioni client con finalità di lettura alla replica primaria vengono reindirizzate a una replica secondaria leggibile.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. Inoltre, se la replica primaria viene portata offline su un'istanza di SQL Server e una nuova replica primaria viene portata online su un'altra, il listener del gruppo di disponibilità abilita i client a connettersi alla nuova replica primaria.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.

Per informazioni essenziali sui listener del gruppo di disponibilità, vedere Creare o configurare un listener del gruppo di disponibilità (SQL Server).For essential information about availability group listeners, see Create or Configure an Availability Group Listener (SQL Server).

Contenuto della sezioneIn This Section:

Configurazione del listener del gruppo di disponibilità Availability Group Listener Configuration

Il listener del gruppo di disponibilità è definito dagli elementi seguenti:An availability group listener is defined by the following:

Nome DNS univocoA unique DNS name
È noto anche come nome di rete virtuale (VNN).This is also known as a Virtual Network Name (VNN). Si applicano le regole di denominazione di Active Directory per i nomi host DNS.Active Directory naming rules for DNS host names apply. Per ulteriori informazioni, vedere l'articolo della Knowledge Base Convenzioni di denominazione di Active Directory per computer, domini, siti e unità organizzative .For more information, see the Naming conventions in Active Directory for computers, domains, sites, and OUs KB article.

Uno o più indirizzi IP virtuali (VIP)One or more Virtual IP addresses (VIPs)
Indirizzi IP virtuali configurati per una o più subnet su cui è possibile eseguire il failover del gruppo di disponibilità.VIPs are configured for one or more subnets to which the availability group can failover.

Configurazione dell'indirizzo IPIP address configuration
Per un listener del gruppo di disponibilità specifico, nell'indirizzo IP vengono utilizzati il protocollo DHCP (Dynamic Host Configuration Protocol) o uno o più indirizzi IP statici.For a given availability group listener, the IP address uses either Dynamic Host Configuration Protocol (DHCP) or one or more static IP addresses.

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

    Se un gruppo di disponibilità risiede in una sola subnet, è possibile configurare tutti gli indirizzi IP del listener del gruppo di disponibilità per l'utilizzo di DHCP.If an availability group resides on a single subnet, you can configure all the availability group listener IP addresses to use DHCP. Per gli ambienti di pre-produzione, tramite DHCP viene offerta una semplice installazione per un gruppo di disponibilità per cui non è richiesto il ripristino di emergenza su un sito remoto in una subnet separata.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. Tuttavia, non è consigliabile utilizzare DHCP insieme a un listener del gruppo di disponibilità in un ambiente di produzione,However, you should not use DHCP in conjunction with an availability group listener in a production environment. poiché in caso di inattività, se il lease IP DHCP scade, per la registrazione del nuovo indirizzo IP DHCP associato al nome DNS del listener viene richiesto tempo aggiuntivo.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. Il tempo aggiuntivo causerà un errore di connessione del client.The extra time will cause client-connection failure.

  • Indirizzi IP staticiStatic IP addresses

    Negli ambienti di produzione è consigliabile che nei listener del gruppo di disponibilità vengano utilizzati indirizzi IP statici.In production environments, we recommend that availability group listeners use static IP addresses. Inoltre, nel caso in cui i gruppi di disponibilità si estendano su più subnet di un dominio, nel listener di un gruppo di disponibilità devono essere utilizzati indirizzi IP statici.Furthermore, where availability groups extend across subnets in a multi-subnet domain, an availability group listener must use static IP addresses.

    Le configurazioni di rete ibride e DHCP su più subnet non sono supportate per i listener del gruppo di disponibilità.Hybrid network configurations and DHCP across subnets are not supported for availability group listeners. Quando si verifica un failover è di fatto possibile che un indirizzo IP dinamico scada o venga rilasciato, compromettendo la disponibilità elevata complessiva.This is because when a failover happens, a dynamic IP might expire or be released, which jeopardizes overall high availability.

Selezione della porta per il listener del gruppo di disponibilità Selecting an Availability Group Listener Port

Quando si configura un listener del gruppo di disponibilità, è necessario specificare una porta.When configuring an availability group listener, you must designate a port. È possibile configurare la porta predefinita su 1433 per non rendere troppo complesse le stringhe di connessione client.You can configure the default port to 1433 in order to allow for simplicity of the client connection strings. Se si intende utilizzare la porta 1433, non è necessario specificare un numero di porta in una stringa di connessione.If using 1433, you do not need to designate a port number in a connection string. Inoltre, poiché ogni listener del gruppo di disponibilità dispone di un nome di rete virtuale separato, ogni listener del gruppo di disponibilità configurato su un solo cluster WSFC può essere configurato per fare riferimento alla stessa porta predefinita 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.

È inoltre possibile specificare una porta del listener non standard. Ciò significa, tuttavia, che è necessario specificare in modo esplicito una porta di destinazione nella stringa di connessione ogni volta che ci si connette al listener del gruppo di 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. Sarà inoltre necessario aprire un'autorizzazione sul firewall per la porta non standard.You will also need to open permission on the firewall for the non-standard port.

Se si utilizza la porta predefinita 1433 per il nome di rete virtuale del listener del gruppo di disponibilità, è necessario assicurarsi che nessuno altro servizio sul nodo cluster utilizzi questa porta, cosa che provocherebbe un conflitto tra porte.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.

Se una delle istanze di SQL Server è già in attesa sulla porta TCP 1433 attraverso il listener dell'istanza e nessun altro servizio, incluse istanze aggiuntive di SQL Server, nel computer è in attesa sulla porta 1433, non si verificherà alcun conflitto tra porte con il listener del gruppo di 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. Il motivo è dato dal fatto che il listener del gruppo di disponibilità può condividere la stessa porta TCP nello stesso processo del servizio.This is because the availability group listener can share the same TCP port inside the same service process. È tuttavia opportuno non configurare più istanze di SQL Server (side-by-side) per l'attesa sulla stessa porta.However multiple instances of SQL Server (side-by-side)should not be configured to listen on the same port.

Utilizzo di un listener per connettersi alla replica primaria Using a Listener to Connect to the Primary Replica

Per utilizzare un listener del gruppo di disponibilità per connettersi alla replica primaria per l'accesso in lettura e scrittura, nella stringa di connessione è necessario specificare il nome DNS del listener del gruppo di 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. Se una nuova replica diventa la replica primaria del gruppo di disponibilità, le connessioni esistenti che utilizzano il nome di rete del listener del gruppo di disponibilità vengono interrotte.If an availability group primary replica changes to a new replica, existing connections that use an availability group listener's network name are disconnected. Le nuove connessioni al listener del gruppo di disponibilità vengono quindi indirizzate alla nuova replica primaria.New connections to the availability group listener are then directed to the new primary replica. Di seguito è riportato un esempio di una stringa di connessione di base per il provider 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  

È ancora possibile scegliere di fare riferimento direttamente all'istanza del nome SQL Server della replica primaria o delle repliche secondarie anziché utilizzare il nome server del listener del gruppo di disponibilità, tuttavia se si sceglie di procedere in questo modo le nuove connessioni non verranno indirizzate automaticamente alla replica primaria corrente, perdendo così un notevole vantaggio.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. Verranno meno anche i vantaggi derivanti dal routing in sola lettura.You will also lose the benefit of read-only routing.

Utilizzo di un listener per connettersi a una replica secondaria di sola lettura (routing di sola lettura) Using a Listener to Connect to a Read-Only Secondary Replica (Read-Only Routing)

Conrouting di sola lettura si intende la capacità di SQL ServerSQL Server di instradare le connessioni in ingresso dirette a un listener del gruppo di disponibilità a una replica secondaria configurata per consentire carichi di lavoro di sola lettura.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. Una connessione in ingresso che fa riferimento a un nome del listener del gruppo di disponibilità può essere automaticamente indirizzata a una replica in sola lettura qualora sussistano le condizioni seguenti:An incoming connection referencing an availability group listener name can automatically be routed to a read-only replica if the following are true:

  • Almeno una replica secondaria viene impostata sull'accesso di sola lettura e ogni replica secondaria di sola lettura e la replica primaria vengono configurate per supportare il routing di sola lettura.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. Per altre informazioni, vedere Per configurare repliche di disponibilità per il routing di sola letturapiù avanti in questa sezione.For more information, see To Configure Availability Replicas for Read-Only Routing, later in this section.

  • La stringa di connessione fa riferimento a un listener del gruppo di disponibilità e la finalità dell'applicazione della connessione in ingresso è impostata su sola lettura, ad esempio con la parola chiave Application Intent=ReadOnly nelle proprietà o negli attributi di connessione oppure nelle stringhe di connessione ODBC o OLEDB.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). Per altre informazioni, vedere Finalità dell'applicazione di sola lettura e routing di sola letturapiù avanti in questa sezione.For more information, see Read-Only Application Intent and Read-Only Routing, later in this section.

Per configurare repliche di disponibilità per il routing di sola lettura To Configure Availability Replicas for Read-Only Routing

Un amministratore del database deve configurare le repliche di disponibilità come segue:A database administrator must configure the availability replicas as follows:

  1. Per ogni replica di disponibilità che si desidera configurare come replica secondaria leggibile, un amministratore del database deve configurare le impostazioni seguenti che vengono applicate solo nel ruolo secondario: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:

    • È necessario impostare l'accesso alla connessione su "tutto" o "sola lettura".Connection access must be set to "all" or "read only".

    • È necessario specificare l'URL del routing di sola lettura.The read-only routing URL must be specified.

  2. Per ognuna di queste repliche, è necessario specificare un elenco di routing di sola lettura per il ruolo primario.For each of these replicas, a read-only routing list must be specified for the primary role. Specificare uno o più nomi di server come destinazioni del routing.Specify one or more server names as routing targets.

Finalità dell'applicazione di sola lettura e routing di sola lettura Read-Only Application Intent and Read-Only Routing

La proprietà della stringa di connessione della finalità dell'applicazione esprime la richiesta dell'applicazione client di essere indirizzata a una versione in lettura e scrittura o in sola lettura del database del gruppo di 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. Per utilizzare un routing di sola lettura, un client deve utilizzare la finalità dell'applicazione di sola lettura nella stringa di connessione per connettersi al listener del gruppo di 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. Senza la finalità dell'applicazione di sola lettura, le connessioni al listener del gruppo di disponibilità sono indirizzate al database sulla una replica primaria.Without the read-only application intent, connections to the availability group listener are directed to the database on the primary replica.

L'attributo della finalità dell'applicazione viene archiviato nella sessione del client durante l'accesso. L'istanza di SQL Server elaborerà questa finalità e determinerà come procedere in base alla configurazione del gruppo di disponibilità e allo stato in lettura e scrittura corrente del database di destinazione nella replica secondaria.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.

Di seguito è riportato un esempio di una stringa di connessione per il provider ADO.NET (System.Data.SqlClient) che specifica la finalità dell'applicazione in sola lettura.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  

In questo esempio, il client tenta di connettersi al listener del gruppo di disponibilità denominato AGListener sulla porta 1433. (È possibile omettere la porta se il listener del gruppo di disponibilità è in attesa sulla porta 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 stringa di connessione contiene la proprietà ApplicationIntent impostata su ReadOnlyed è quindi una stringa di connessione con finalità di lettura.The connection string has the ApplicationIntent property set to ReadOnly, making this a read-intent connection string. Senza questa impostazione, il server non avrebbe tentato di eseguire il routing in sola lettura della connessione.Without this setting, the server would not have attempted a read-only routing of the connection.

Il database primario del gruppo di disponibilità elabora la richiesta di routing in sola lettura in ingresso e tenta di trovare una replica online in sola lettura che sia stata aggiunta alla replica primaria e configurata per il routing in sola lettura.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. Il client riceve nuovamente le informazioni di connessione dal server della replica primaria e si connette alla replica in sola lettura identificata.The client receives back connection information from the primary replica server and connects to the identified read-only replica.

La finalità dell'applicazione può essere inviata da un driver client a un'istanza di livello inferiore di SQL Server.Note that the application intent can be sent from a client driver to a down-level instance of SQL Server. In questo caso, la finalità dell'applicazione di sola lettura viene ignorato e la connessione procede normalmente.In this case, application intent of read-only is ignored and the connection proceeds as normal.

È possibile ignorare il routing di sola lettura non impostando la proprietà di connessione della finalità dell'applicazione su ReadOnly (se non viene specificata, il valore predefinito durante l'accesso è ReadWrite ) oppure connettendosi direttamente all'istanza della replica primaria di SQL Server anziché usare il nome del listener del gruppo di 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. Il routing in sola lettura non può avvenire se la connessione viene eseguita direttamente a una replica in sola lettura.Read-only routing will also not occur if you connect directly to a read-only replica.

Ignorare i listener del gruppo di disponibilità Bypassing Availability Group Listeners

Se i listener dei gruppi di disponibilità consentono il supporto per il reindirizzamento del failover e il routing in sola lettura, le connessioni client non devono utilizzarli.While availability group listeners enable support for failover redirection and read-only routing, client connections are not required to use them. Una connessione client può anche fare riferimento all'istanza di SQL Server anziché stabilire la connessione al listener del gruppo di disponibilità.A client connection can also directly reference the instance of SQL Server instead of connecting to the availability group listener.

Per l'istanza di SQL Server è irrilevante se una connessione effettua l'accesso tramite il listener del gruppo di disponibilità o un altro endpoint dell'istanza.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'istanza di SQL Server verificherà lo stato del database di destinazione e consentirà o meno la connettività in base alla configurazione del gruppo di disponibilità e lo stato corrente del database sull'istanza.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. Ad esempio, se un'applicazione client si connette direttamente a un'istanza della porta di SQL Server e a un database di destinazione ospitato in un gruppo di disponibilità e il database di destinazione si trova nello stato primario ed è online, la connettività ha esito positivo.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. Se il database di destinazione è offline o si trova in uno stato transizionale, la connettività al database ha esito negativo.If the target database is offline or in a transitional state, connectivity to the database will fail.

In alternativa, durante la migrazione dal mirroring del database a Gruppi di disponibilità Always OnAlways On availability groups, le applicazioni possono specificare la stringa di connessione per il mirroring del database purché esista una sola replica secondaria e non siano consentite le connessioni utente.Alternatively, while migrating from database mirroring to Gruppi di 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. Per altre informazioni, vedere Uso delle stringhe di connessione per il mirroring del database con gruppi di disponibilitàpiù avanti in questa sezione.For more information, see Using Database-Mirroring Connection Strings with Availability Groups, later in this section.

Uso delle stringhe di connessione per il mirroring del database con gruppi di disponibilità Using Database-Mirroring Connection Strings with Availability Groups

Se un gruppo di disponibilità include solo una replica di disponibilità ed è configurato ALLOW_CONNECTIONS = READ_ONLY o ALLOW_CONNECTIONS = NONE per la replica secondaria, i client possono connettersi alla replica primaria tramite una stringa di connessione per il mirroring del database.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. Questo approccio può essere utile durante la migrazione di un'applicazione esistente dal mirroring del database a un gruppo di disponibilità, a condizione che il gruppo di disponibilità sia limitato a due repliche di disponibilità (una replica primaria e una replica secondaria).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). Se si aggiungono altre repliche di disponibilità, è necessario creare un listener per il gruppo di disponibilità e aggiornare le applicazioni affinché utilizzino il nome DNS del listener del gruppo di 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.

Quando si utilizzano le stringhe di connessione per il mirroring del database, il client può utilizzare SQL ServerSQL Server Native Client o il provider di dati .NET Framework per 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 stringa di connessione fornita da un client deve specificare almeno il nome di un'istanza del server, ovvero il nome del partner iniziale, per identificare l'istanza del server che ospita inizialmente la replica di disponibilità alla quale si desidera connettersi.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. Facoltativamente, la stringa di connessione può fornire anche il nome di un'altra istanza del server, il nome del partner di failover, per identificare l'istanza del server che ospita inizialmente la replica secondaria come nome del partner di failover.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.

Per altre informazioni sulle stringhe di connessione per il mirroring del database, vedere Connettere client a una sessione di mirroring del database (SQL Server).For more information about database mirroring connection strings, see Connect Clients to a Database Mirroring Session (SQL Server).

Comportamento delle connessioni client al failover Behavior of Client Connections on Failover

Quando si verifica un failover del gruppo di disponibilità, le connessioni persistenti esistenti al gruppo di disponibilità vengono terminate e il client deve stabilire una nuova connessione per poter continuare a utilizzare lo stesso database primario o il database secondario in sola lettura.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. Nel corso di un failover sul lato server, la connettività al gruppo di disponibilità potrebbe non essere disponibile, di conseguenza l'applicazione client potrebbe tentare di riconnettersi finché il database primario non viene riportato online.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.

Se il gruppo di disponibilità viene riportato online durante un tentativo di connessione dell'applicazione client, ma prima del periodo di timeout della connessione, è possibile che il driver client si connetta correttamente durante uno di questi tentativi interni senza che si verifichi alcun errore.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.

Supporto del failover su più subnet del gruppo di disponibilità Supporting Availability Group Multi-Subnet Failovers

Se si utilizzano librerie client che supportano l'opzione di connessione MultiSubnetFailover nella stringa di connessione, è possibile ottimizzare il failover del gruppo di disponibilità su un'altra subnet impostando MultiSubnetFailover su “True” o "Yes", a seconda della sintassi del provider utilizzato.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.

Nota

È consigliabile utilizzare questa impostazione per le connessioni con una o più subnet a listener di gruppi di disponibilità e a istanze del cluster di failover di 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. Abilitando questa opzione si aggiungono ulteriori ottimizzazioni, anche per scenari con una sola subnet.Enabling this option adds additional optimizations, even for single-subnet scenarios.

L'opzione di connessione MultiSubnetFailover funziona unicamente con il protocollo di rete TCP ed è supportata solo in caso di connessione a un listener del gruppo di disponibilità e per qualsiasi nome di rete virtuale che si connette a 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.

Di seguito è riportato un esempio di una stringa di connessione per il provider ADO.NET (System.Data.SqlClient) che consente il failover su più subnet: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'opzione di connessione MultiSubnetFailover deve essere impostata su True anche se il gruppo di disponibilità si estende su una sola subnet.The MultiSubnetFailover connection option should be set to True even if the availability group only spans a single subnet. In questo modo è possibile preconfigurare nuovi client affinché supportino l'espansione futura su più subnet senza necessità di modificare la stringa di connessione client, oltre a ottimizzare le prestazioni dei failover su una sola subnet.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. L'opzione di connessione MultiSubnetFailover non è obbligatoria, ma permette di accelerare il failover su subnet.While the MultiSubnetFailover connection option is not required, it does provide the benefit of a faster subnet failover. Il driver client tenta infatti di aprire un socket TCP per ogni indirizzo IP in parallelo associato al gruppo di 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. Il driver client attende che il primo indirizzo IP risponda, quindi utilizza tale risposta per la connessione.The client driver will wait for the first IP to respond with success and once it does, will then use it for the connection.

Listener del gruppo di disponibilità e certificati SSL Availability Group Listeners and SSL Certificates

Quando ci si connette a un listener del gruppo di disponibilità, se le istanze di SQL Server utilizzano i certificati SSL insieme alla crittografia della sessione, il driver client che tenta la connessione deve supportare il Nome soggetto alternativo nel certificato SSL per forzare la crittografia.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. Il supporto del driver SQL Server per il Nome soggetto alternativo del certificato è pianificato per ADO.NET (SqlClient), Microsoft JDBC e 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).

È necessario configurare un certificato X.509 per ogni nodo server che partecipa nel cluster di failover con un elenco di tutti i listener dei gruppi di disponibilità impostati nel Nome soggetto alternativo del certificato.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.

Ad esempio, se il cluster WSFC dispone di tre listener con i nomi AG1_listener.Adventure-Works.com, AG2_listener.Adventure-Works.come AG3_listener.Adventure-Works.com, il Nome soggetto alternativo per il certificato deve essere impostato nel modo seguente: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  

Listener del gruppo di disponibilità e nomi entità server (SPN) Availability Group Listeners and Server Principal Names (SPNs)

Un amministratore di dominio deve configurare un nome entità server (SPN) in Active Directory per ogni nome di listener del gruppo di disponibilità per abilitare Kerberos per la connessione client al listener del gruppo di 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. Per registrare il nome SPN, è necessario usare l'account del servizio dell'istanza del server che ospita la replica di disponibilità.When registering the SPN, you must use the service account of the server instance that hosts the availability replica . Per fare in modo che il nome SPN funzioni su tutte le repliche, è necessario riutilizzare lo stesso account del servizio per tutte le istanze nel cluster WSFC che ospita il gruppo di 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.

Usare lo strumento della riga di comando di Windows setspn per configurare il nome SPN.Use the setspn Windows command line tool to configure the SPN. Ad esempio, per configurare un nome SPNr per un gruppo di disponibilità denominato AG1listener.Adventure-Works.com ospitato in un set di istanze di SQL Server configurate per essere eseguite nell'account di dominio 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  

Per ulteriori informazioni sulla registrazione manuale di un nome SPN per SQL Server, vedere 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.

Vedere ancheSee Also

Panoramica di Gruppi di disponibilità Always On (SQL Server) Overview of Always On Availability Groups (SQL Server)
Connettività client AlwaysOn (SQL Server) Always On Client Connectivity (SQL Server)
Informazioni sull'accesso alla connessione client per le repliche di disponibilità (SQL Server) About Client Connection Access to Availability Replicas (SQL Server)
Repliche secondarie attive: Repliche secondarie leggibili (Gruppi di disponibilità AlwaysOn) Active Secondaries: Readable Secondary Replicas (Always On Availability Groups)
Connettere client a una sessione di mirroring del database (SQL Server)Connect Clients to a Database Mirroring Session (SQL Server)