Risolvere i problemi dei gruppi di disponibilità Always On in SQL Server
Questo articolo illustra come risolvere il problema comune relativo alla configurazione AlwaysOn in SQL Server.
Note
Per un'esperienza guidata di questo articolo, vedere Risoluzione dei problemi di SQL Server AlwaysOn.
Versione originale del prodotto: SQL Server 2012 Enterprise, SQL Server 2014 Enterprise, SQL Server 2016 Enterprise
Numero KB originale: 10179
Note importanti
I dati CSS di Microsoft indicano che una percentuale significativa di problemi dei clienti viene spesso risolta in precedenza in un CU rilasciato, ma non applicata in modo proattivo e pertanto consiglia l'installazione proattiva continua delle UNITÀ di configurazione non appena diventano disponibili. Per altre informazioni, vedere Annuncio degli aggiornamenti al modello di manutenzione incrementale (ISM) di SQL Server.
Per controllare le UNITÀ di configurazione più recenti che potrebbero essere disponibili per la versione, vedere Come determinare la versione, l'edizione e il livello di aggiornamento di SQL Server e dei relativi componenti.
È possibile vedere Strumenti utili per la risoluzione dei problemi e il monitoraggio dei gruppi di disponibilità AlwaysOn in Guida alla risoluzione dei problemi e al monitoraggio dei gruppi di disponibilità AlwaysOn per altre informazioni sugli strumenti che è possibile usare per la diagnosi di diversi tipi di problemi e per il monitoraggio dei gruppi di disponibilità. La guida include anche altri scenari che potrebbero non essere trattati in questa procedura guidata.
La documentazione relativa al nodo padre per i gruppi di disponibilità AlwaysOn e fornisce un riferimento unico per varie domande, vedere Gruppi di disponibilità AlwaysOn (SQL Server).
Sono necessari puntatori per la configurazione e la configurazione dei gruppi di disponibilità AlwaysOn
Se si sta cercando la documentazione sulla configurazione di Always On, vedere i documenti seguenti:
Introduzione ai gruppi di disponibilità AlwaysOn (SQL Server): il documento fornisce le risposte a molte domande sui gruppi di disponibilità e sulla configurazione. Seguendo tutti i passaggi descritti in questo articolo ed esaminando prerequisiti, restrizioni e consigli per i gruppi di disponibilità AlwaysOn (SQL Server) è possibile evitare molti problemi che possono verificarsi con la configurazione e la gestione dei gruppi di disponibilità nell'ambiente.
Risorse aggiuntive
- Procedura dettagliata: Creazione di un gruppo di disponibilità AlwaysOn di SQL Server 2012
- Guide all'architettura Always On
- Collegamento esterno: Gruppi di disponibilità AlwaysOn di SQL Server
Se queste informazioni non sono utili, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Si verificano problemi durante la configurazione dei gruppi di disponibilità AlwaysOn
I problemi di configurazione tipici includono i gruppi di disponibilità AlwaysOn sono disabilitati, gli account non sono configurati correttamente, l'endpoint del mirroring del database non esiste, l'endpoint è inaccessibile (errore di SQL Server 1418), l'accesso alla rete non esiste e un comando del database di join ha esito negativo (errore di SQL Server 35250). Per informazioni sulla risoluzione di questi problemi, vedere il documento seguente:
Risolvere i problemi relativi alla configurazione di Gruppi di disponibilità Always On (SQL Server)
Collegamento aggiuntivo: Correzione: Errore 41009 quando si tenta di creare più gruppi di disponibilità
Se il problema persiste, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Si verificano problemi con la configurazione del listener (19471, 19476 e altri errori)
Uno dei problemi di configurazione più comuni riscontrati dai clienti è la creazione del listener del gruppo di disponibilità. Gli errori sono simili ai seguenti:
-
Messaggio 19471, livello 16, stato 0, riga 2Il cluster WSFC non è riuscito a portare online la risorsa Nome di rete con nome DNS ''. È possibile che il nome DNS sia stato acquisito o che si sia verificato un conflitto con i servizi dei nomi esistenti oppure che il servizio cluster WSFC non sia in esecuzione o non sia accessibile. Usare un nome DNS diverso per risolvere i conflitti di nomi o controllare il log del cluster WSFC per altre informazioni.
-
Messaggio 19476, livello 16, stato 4, riga 2Il tentativo di creare il nome di rete e l'indirizzo IP per il listener non è riuscito. Il servizio WSFC potrebbe non essere in esecuzione o potrebbe non essere accessibile nello stato corrente oppure i valori specificati per il nome di rete e l'indirizzo IP potrebbero non essere corretti. Controllare lo stato del cluster WSFC e convalidare il nome di rete e l'indirizzo IP con l'amministratore di rete.
La maggior parte del tempo, l'errore di creazione del listener risultante nei messaggi precedenti è dovuto alla mancanza di autorizzazioni per l'oggetto CNO (Cluster Name Object) in Active Directory per creare e leggere l'oggetto computer listener. Per la risoluzione di questo problema, vedere gli articoli seguenti:
Se il problema persiste, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Il failover automatico non funziona come previsto
Se si nota che il failover automatico non funziona come previsto durante i test o nell'ambiente di produzione, vedere Risoluzione dei problemi di failover automatico negli ambienti AlwaysOn di SQL Server 2012.
La configurazione non corretta degli errori massimi nel periodo specificato è una delle cause principali per il failover automatico del database primario nel database secondario. Il valore predefinito per questa impostazione è N-1, dove N è il numero di repliche. Per altre informazioni, vedere Limite massimo errori del cluster di failover (gruppo).
Se il problema persiste, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Si verificano problemi di connessione ai gruppi di disponibilità AlwaysOn
Dopo aver configurato il listener del gruppo di disponibilità per un gruppo di disponibilità AlwaysOn in SQL Server 2012, potrebbe non essere possibile effettuare il ping del listener o connettersi a esso da un'applicazione. È possibile che venga visualizzato un errore simile al seguente:
Sqlcmd: Errore: Microsoft SQL Native Client: timeout di accesso scaduto.
Per risolvere questi e simili errori, esaminare quanto segue:
- Errore di timeout e non è possibile connettersi a un listener del gruppo di disponibilità AlwaysOn di SQL Server 2012 in un ambiente con più subnet
- Timeout di connessione in un gruppo di disponibilità su più subnet
Altri collegamenti alle informazioni:
- Un aggiornamento introduce il supporto per le funzionalità Always On in SQL Server 2012 o versione successiva per the.NET Framework 3.5 SP1
- Clustering su più subnet di SQL Server (SQL Server)
Se il problema persiste, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Si verificano problemi durante la configurazione dei gruppi di disponibilità Always On nella macchina virtuale di Azure (IaaS)
Molti problemi relativi a Always On si verificano a causa di una configurazione non corretta del listener. Se si verificano problemi di connessione al listener,
Assicurarsi di leggere tutte le limitazioni del listener ILB e seguire tutti i passaggi descritti nell'articolo seguente prestando particolare attenzione alla configurazione delle dipendenze, all'indirizzo IP e a vari altri parametri nello script di PowerShell.
In caso di dubbi, è possibile eliminare e ricreare il listener in base al documento precedente.
Se di recente la macchina virtuale è stata spostata in un servizio diverso o se gli indirizzi IP sono stati modificati, è necessario aggiornare il valore della risorsa indirizzo IP in modo da riflettere il nuovo indirizzo ed è necessario ricreare l'endpoint con carico bilanciato per il gruppo di disponibilità. È possibile aggiornare l'indirizzo IP usando i
Get
comandi oSet
come indicato di seguito:Get-ClusterResource "IPResourceName" | Set-ClusterParameter -name Address -value "w.x.y.z"
Documenti consigliati:
Se il problema persiste, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Il failover da primario a secondario o viceversa richiede molto tempo
Dopo un failover automatico o un failover manuale pianificato senza perdita di dati in un gruppo di disponibilità, è possibile che il tempo di failover superi l'obiettivo tempo di ripristino (RTO, Recovery Time Objective). Per risolvere i problemi relativi alle cause e alle possibili risoluzioni, vedere Risolvere i problemi relativi al superamento dell'obiettivo RTO del gruppo di disponibilità.
Se il problema persiste, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Le modifiche nella replica primaria non vengono riflesse su o lente da replicare nella replica secondaria
È possibile notare che le modifiche nella replica primaria non vengono propagate in modo tempestivo al database secondario. Per risolvere questi problemi, provare a eseguire le operazioni seguenti:
Per gli ambienti SQL Server 2012 e SQL Server 2014, vedere FIX: Sincronizzazione lenta quando i dischi hanno dimensioni di settore diverse per i file di log di replica primaria e secondaria negli ambienti di disponibilità e logshipping di SQL Server.
Controllare se i nodi secondari si trovano in uno stato sospeso nell'amministratore del cluster.
Vedere Risoluzione dei problemi: le modifiche nella replica primaria non vengono riflesse nella replica secondaria.
Se il problema persiste, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Come gestire le dimensioni del log delle transazioni per i database del gruppo di disponibilità
È possibile ridurre le dimensioni del log delle transazioni configurando backup regolari in server primari o secondari.
Per altre informazioni, vedere gli argomenti seguenti:
- Offload di backup supportati in repliche secondarie di un gruppo di disponibilità
- Esecuzione di backup del log delle transazioni tramite repliche secondarie di sola lettura del gruppo di disponibilità AlwaysOn - Parte 1
Se queste informazioni non sono utili, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Server primari o secondari colpiti in Risoluzione dello stato oppure si verificano failover imprevisti
Controllare i registri eventi di sistema e applicazione per individuare i problemi hardware e altri errori e collaborare con il fornitore per risolverli.
Se si usano macchine virtuali, controllare la knowledge base per verificare se sono presenti problemi segnalati di recente che potrebbero contribuire al problema. Ad esempio, la perdita di pacchetti di grandi dimensioni a livello di sistema operativo guest nella scheda di interfaccia di rete virtuale VMXNET3 in ESXi (2039495) ha causato problemi con la configurazione del gruppo di disponibilità in alcuni casi.
Ulteriori informazioni:
Se il problema persiste, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Non è possibile portare le risorse online
Controllare se i database richiedono molto tempo per il ripristino esaminando i messaggi nel log degli errori SQL.
Se il problema persiste, vedere Altre informazioni sui gruppi di disponibilità AlwaysOn.
Domande frequenti
È possibile avere due listener per un gruppo di disponibilità?
Sì, è possibile configurare più listener per lo stesso gruppo di disponibilità. Vedere Come creare più listener per lo stesso gruppo di disponibilità (Goden Yao).
È possibile avere una scheda di interfaccia di rete separata per il traffico sempre attivo e la connettività client?
Sì, è possibile avere una scheda di interfaccia di rete dedicata per il traffico Always On. Vedere Configurare un gruppo di disponibilità per comunicare in una rete dedicata.
Quali edizioni supportano le istanze del cluster di failover Always On?
Questo argomento della documentazione online di SQL Server contiene altre informazioni: Edizioni e funzionalità supportate per SQL Server 2016.
Come eseguire il ripristino in caso di errore in tutti i nodi del cluster?
Vedere Ripristino di emergenza WSFC tramite quorum forzato (SQL Server).
Dove è possibile trovare informazioni sul supporto per le transazioni distribuite nelle configurazioni del gruppo di disponibilità?
Vedere Transazioni - gruppi di disponibilità e mirroring del database.
Come aggiornare le configurazioni Always On?
Vedere Aggiornamento delle istanze di replica del gruppo di disponibilità AlwaysOn.
Come aggiungere un database abilitato per TDE (Transparent Data Encryption) alla configurazione del gruppo di disponibilità?
Per aggiungere il database abilitato per TDE al gruppo di disponibilità, vedere Come configurare Always On per un database TDE.
Come configurare gli avvisi per verificare se il database secondario è in ritardo rispetto al database primario?
È possibile usare lo script seguente:
SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server, dr_state.database_id AS database_id, is_ag_replica_local = CASE WHEN ar_state.is_local = 1 THEN N'LOCAL' ELSE 'REMOTE' END, ag_replica_role = CASE WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED' ELSE ar_state.role_desc END, dr_state.last_hardened_lsn, dr_state.last_hardened_time, datediff(s,last_hardened_time, getdate()) AS 'seconds behind primary' FROM (( sys.availability_groups AS ag JOIN sys.availability_replicas AS ar ON ag.group_id = ar.group_id) JOIN sys.dm_hadr_availability_replica_states AS ar_state ON ar.replica_id = ar_state.replica_id) JOIN sys.dm_hadr_database_replica_states dr_state ON ag.group_id = dr_state.group_id AND dr_state.replica_id = ar_state.replica_id
Come ricevere un avviso se lo stato del database è diverso da quello sincronizzato?
È possibile usare lo script seguente:
SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server, dr_state.database_id AS database_id, is_ag_replica_local = CASE WHEN ar_state.is_local = 1 THEN N'LOCAL' ELSE 'REMOTE' END, ag_replica_role = CASE WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED' ELSE ar_state.role_desc END, ar_state.connected_state_desc, ar.availability_mode_desc, dr_state.synchronization_state_desc FROM (( sys.availability_groups AS ag JOIN sys.availability_replicas AS ar ON ag.group_id = ar.group_id ) JOIN sys.dm_hadr_availability_replica_states AS ar_state ON ar.replica_id = ar_state.replica_id) JOIN sys.dm_hadr_database_replica_states dr_state ON ag.group_id = dr_state.group_id AND dr_state.replica_id = ar_state.replica_id
È anche possibile esaminare i collegamenti seguenti per altri metodi per monitorare i gruppi AlwaysOn:
Gestione basata su criteri per problemi operativi con i gruppi di disponibilità Always On
Collegamento esterno: Uso della gestione basata su criteri per gli avvisi di perdita dei dati dei gruppi di disponibilità di SQL Server
Comportamento del mirroring dinamico in Windows Server 2012 R2 Failover Clustering