Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il driver Microsoft ODBC per SQL Server supporta i gruppi di disponibilità Always On. Per altre informazioni su Gruppi di disponibilità Always On, vedere:
Connettersi a un listener del gruppo di disponibilità Always On
Riferimento per la creazione e la configurazione di gruppi di disponibilità Always On
Clustering di failover e gruppi di disponibilità Always On (SQL Server)
È possibile specificare nella stringa di connessione il listener del gruppo di disponibilità di un determinato gruppo di disponibilità. Se un'applicazione ODBC si collega a un database in un gruppo di disponibilità che fa failover, la connessione originale si interrompe. Per continuare a funzionare dopo il failover, l'applicazione deve aprire una nuova connessione.
Senza MultiSubnetFailover=Yes, il meccanismo di fallback multi-IP precedente del driver può essere lento quando il primo indirizzo IP risolto non è raggiungibile. Per maggiori informazioni sul comportamento di fallback di Windows, vedere Usare la risoluzione IP di rete trasparente con il driver ODBC.
Quando ti connetti a un listener di gruppo di disponibilità usando MultiSubnetFailover=Yes, il driver tenta di connettersi in parallelo a tutti gli indirizzi IP risolti. Se un tentativo di connessione ha esito positivo, il driver ignora tutti i tentativi di connessione in sospeso.
Note
Poiché il failover di un gruppo di disponibilità può causare un errore di connessione, è consigliabile implementare una logica di ripetizione dei tentativi di connessione. Riprova una connessione non riuscita finché non viene ristabilita. L'aumento del timeout di connessione e l'implementazione di una logica di ritentativo della connessione aumentano le probabilità di connettersi a un gruppo di disponibilità.
Connettersi a MultiSubnetFailover
Impostare MultiSubnetFailover=Yes quando la destinazione è database SQL di Azure, Istanza gestita di SQL di Azure, un database SQL in Microsoft Fabric, un listener del gruppo di disponibilità o un'istanza del cluster di failover.
MultiSubnetFailover consente un recupero dal failover più rapido facendo sì che il driver tenti connessioni TCP a tutti gli indirizzi IP risolti in parallelo e utilizzi la prima connessione riuscita.
Questa proprietà di connessione riduce anche notevolmente il tempo di failover per le topologie Always On su una o più subnet. Durante un failover su più subnet, il client cerca di eseguire le connessioni in parallelo. Durante il failover di una subnet, il driver ripete in modo intensivo i tentativi di connessione TCP.
La proprietà di MultiSubnetFailover connessione indica che l'applicazione viene distribuita su una topologia in cui il nome host di destinazione potrebbe risolversi su più di un endpoint. Il driver cerca di connettersi al database nell'istanza di SQL Server primaria eseguendo un tentativo di connessione a tutti gli indirizzi IP.
Quando ti connetti usando MultiSubnetFailover=Yes, il client ritenta i tentativi di connessione TCP più velocemente rispetto agli intervalli di ritrasmissione TCP predefiniti del sistema operativo.
MultiSubnetFailover=Yes consente una riconnessione più rapida dopo il failover di un gruppo di disponibilità Always On o di un'istanza del cluster di failover Always On.
MultiSubnetFailover=Yes si applica sia ai gruppi di disponibilità a subnet singola e multipla sia alle istanze del cluster di failover.
MultiSubnetFailover=Yes è sicuro su bersagli a singolo IP. Quando il DNS si risolve su un indirizzo, MultiSubnetFailover=Yes non crea ulteriori tentativi di connessione parallela.
Recommendations
Quando ti connetti a una destinazione a disponibilità elevata o con più endpoint (database SQL di Azure, Istanza gestita di SQL di Azure, database SQL di Microsoft Fabric, un listener del gruppo di disponibilità o un'istanza del cluster di failover):
Specificare
MultiSubnetFailover=Yes. È l'impostazione consigliata per questi target, ed è sicuro lasciarla attiva quando il target si risolve a un unico indirizzo IP, perché il driver effettua un singolo tentativo di connessione.Specificare il listener del gruppo di disponibilità come server nella stringa di connessione.
Non puoi usare
MultiSubnetFailover=Yesun protocollo diverso da TCP.Non è possibile connettersi a un'istanza di SQL Server configurata con più di 64 indirizzi IP.
Non è possibile usare
MultiSubnetFailover=Yescon il mirroring del database. Il driver restituisce un errore quando la stringa di connessione specificaFailover_Partner, e anche quando il server segnala che il database è rispecchiato. Il mirroring del database è obsoleto in tutte le versioni supportate di SQL Server. Usare invece Gruppi di disponibilità Always On.Utilizza sia l'autenticazione di SQL Server sia l'autenticazione Kerberos con
MultiSubnetFailover=Yes, senza influire sul comportamento dell'applicazione.Aumenta
loginTimeoutper gestire i tempi di failover e ridurre i tentativi di ritentativi di connessione dell'applicazione. Per database SQL di Azure serverless con auto-pausa attivata, usa almeno 60 secondi. Un database in pausa automatica riprende al primo tentativo di connessione, e questo tentativo può fallire con l'errore 40613 mentre il database riprende, quindi l'applicazione deve riprovare. Per ulteriori informazioni, vedere Sospensione automatica e ripresa automatica nel livello di calcolo serverless per database SQL di Azure.Le transazioni distribuite non sono supportate.
Se il routing di sola lettura non è attivo, non è possibile stabilire una connessione a un percorso di replica secondaria in un gruppo di disponibilità nelle situazioni seguenti:
Se la posizione della replica secondaria non è configurata per accettare connessioni.
Se un'applicazione usa
ApplicationIntent=ReadWritee il percorso di replica secondaria è configurato per l'accesso di sola lettura.
Una connessione non riesce se una replica primaria è configurata per rifiutare i carichi di lavoro di sola lettura e la stringa di connessione contiene ApplicationIntent=ReadOnly.
Specificare la finalità dell'applicazione
È possibile specificare la parola chiave ApplicationIntent nella stringa di connessione. I valori assegnabili sono ReadWrite (impostazione predefinita) e ReadOnly.
Quando si imposta il valore ApplicationIntent=ReadOnly, il client richiede un carico di lavoro di lettura durante la connessione. Il server applica la finalità al momento della connessione e durante un'istruzione di database USE.
La parola chiave ApplicationIntent non funziona con i database legacy di sola lettura.
Destinazioni di ReadOnly
Quando una connessione sceglie ReadOnly, la connessione viene assegnata a una delle configurazioni speciali seguenti che potrebbero essere disponibili per il database:
Sempre attivo. Un database può consentire o impedire carichi di lavoro di lettura nel database del gruppo di disponibilità di destinazione. Questa scelta viene controllata usando la clausola
ALLOW_CONNECTIONSdelle istruzioni Transact-SQLPRIMARY_ROLEeSECONDARY_ROLE.Read scale-out (Scalabilità in lettura)
Se nessuno di questi target speciali è disponibile, si legge dal database normale.
La parola chiave ApplicationIntent è utilizzata per abilitare il routing di sola lettura.
Routing di sola lettura
Il routing di sola lettura è una funzionalità che può garantire la disponibilità di una replica di sola lettura di un database. Per abilitare il routing di sola lettura, si applicano tutte le condizioni seguenti:
È necessario connettersi a un listener del gruppo di disponibilità Always On.
La parola chiave della stringa di connessione
ApplicationIntentdeve essere impostata suReadOnly.L'amministratore del database deve configurare il gruppo di disponibilità in modo da abilitare il routing di sola lettura.
Più connessioni che usano il routing di sola lettura potrebbero non connettersi tutte alla stessa replica di sola lettura. Le modifiche nella sincronizzazione del database o nella configurazione di routing del server possono comportare connessioni client a repliche di sola lettura diverse.
È possibile garantire che tutte le richieste di sola lettura si connettano alla stessa replica di sola lettura non specificando un listener del gruppo di disponibilità nella parola chiave della stringa di connessione Server. Specificare invece il nome dell'istanza di sola lettura.
Il routing di sola lettura potrebbe richiedere più tempo rispetto alla connessione all'istanza primaria. Ciò dipende dal fatto che il routing di sola lettura si connette prima alla replica primaria e quindi cerca la migliore replica secondaria leggibile disponibile. A causa di questi passaggi aggiuntivi, è consigliabile aumentare il timeout di login ad almeno 30 secondi.
Sintassi ODBC
Due parole chiave della stringa di connessione ODBC supportano i gruppi di disponibilità Always On:
ApplicationIntentMultiSubnetFailover
Per ulteriori informazioni sulle parole chiave della stringa di connessione ODBC, vedere Using Connection String Keywords with SQL Server Native Client.
Gli attributi delle proprietà di connessione equivalenti sono:
SQL_COPT_SS_APPLICATION_INTENTSQL_COPT_SS_MULTISUBNET_FAILOVER
Per altre informazioni sugli attributi di connessione ODBC, vedere SQLSetConnectAttr.
Un'applicazione ODBC che usa Gruppi di disponibilità Always On può stabilire la connessione tramite una delle due funzioni seguenti:
| Function | Description |
|---|---|
| Funzione SQLConnect |
SQLConnect supporta sia ApplicationIntent sia MultiSubnetFailover tramite un nome di origine dati (DSN) o attributi di connessione. |
| Funzione SQLDriverConnect |
SQLDriverConnect supporta ApplicationIntent e MultiSubnetFailover tramite DSN, parola chiave della stringa di connessione o attributo di connessione. |