Possibili errori durante le sessioni tra repliche di disponibilità (SQL Server)Possible Failures During Sessions Between Availability Replicas (SQL Server)

Gli errori in una sessione tra due repliche di disponibilità possono essere causati da problemi di tipo fisico, del sistema operativo o di SQL ServerSQL Server .Physical, operating system, or SQL ServerSQL Server problems can cause a failure in a session between two availability replicas. Una replica di disponibilità non controlla regolarmente i componenti sui quali Sqlservr.exe si basa per verificare se stiano funzionando correttamente o abbiano generato un errore.An availability replica does not regularly check the components on which Sqlservr.exe relies to verify whether they are functioning correctly or have failed. In alcuni casi, tuttavia, il componente interessato invia una segnalazione di errore a Sqlservr.exe.However, for some types of failures, the affected component reports an error to Sqlservr.exe. Un errore segnalato da un altro componente è denominato errore hardware.An error reported by another component is called a hard error. Per rilevare altri errori che altrimenti non verrebbero rilevati, Gruppi di disponibilità Always OnAlways On availability groups implementa un proprio meccanismo di timeout della sessione.To detect other failures that would otherwise go unnoticed, Gruppi di disponibilità Always OnAlways On availability groups implements its own session-timeout mechanism. Specifica il periodo di timeout della sessione in secondi.Specifies the session-timeout period in seconds. Il periodo di timeout indica l'intervallo di attesa massimo rispettato dall'istanza del server per la ricezione di un messaggio PING da un'altra istanza, prima che l'altra istanza venga considerata disconnessa.This time-out period is the maximum time that a server instance waits to receive a PING message from another instance before considering that other instance to be disconnected. Quando si verifica un timeout della sessione tra due repliche di disponibilità, le repliche di disponibilità presuppongono che si sia verificato un errore e viene dichiarato un errore software.When a session timeout occurs between two availability replicas, the availability replicas assume that a failure has occurred and declares a soft error.

Importante

Non è possibile rilevare gli errori che si verificano nei database diversi da quello primario.Failures in databases other than the primary database are not detectable. È inoltre improbabile rilevare un errore di un disco dati, a meno che il database non venga riavviato a causa di un errore di un disco dati.Moreover, a data disk failure is unlikely to be detected unless the database is restarted because of a data disk failure.

La velocità di rilevamento degli errori, e quindi il tempo di reazione a un errore, varia a seconda che si tratti di un errore hardware o software.The speed of error detection and, therefore, the reaction time to a failure, depends on whether the error is hard or soft. Alcuni errori hardware, quali gli errori di rete, vengono segnalati immediatamente.Some hard errors, such as network failures are reported immediately. In alcuni casi, invece, i periodi di timeout specifici dei componenti possono ritardare la segnalazione di determinati errori hardware.However, in some cases, component-specific time-out periods can delay the reporting of some hard errors. Per gli errori software, la velocità di rilevamento degli errori dipende dalla durata del periodo di timeout della sessione.For soft errors, the length of the session-timeout period determines the speed of error detection. L'impostazione predefinita è 10 secondi.By default, this period is 10 seconds. Questo è il valore minimo consigliato.This is the minimum recommended value.

Errori provocati da errori hardwareFailures Due to Hard Errors

Di seguito vengono riportate alcune possibili cause di errori hardware:Possible causes of hard errors include (but are not limited to) the following conditions:

  • Interruzione di una connessione o danneggiamento di un cavoA broken connection or wire

  • Funzionamento non corretto di una scheda di reteA bad network card

  • Modifica della configurazione di un routerA router change

  • Modifiche al firewallChanges in the firewall

  • Riconfigurazione dell'endpointEndpoint reconfiguration

  • Guasto dell'unità contenente il log delle transazioniLoss of the drive where the transaction log resides

  • Errori del sistema operativo o di processoOperating system or process failure

    Se ad esempio l'unità dei log sul database primario smette di rispondere e genera un errore, il sistema operativo segnala a Sqlservr.exe che si è verificato un errore grave.For example, when the log drive on the primary database becomes unresponsive and fails, the operating system informs Sqlservr.exe that a serious error has occurred.

    Alcuni componenti, ad esempio componenti di rete o alcuni sottosistemi IO, dispongono di specifici timeout per la determinazione degli errori.Some components, such as network components and some IO subsystems, have their own time-outs to determine failures. Tali timeout sono indipendenti da Gruppi di disponibilità Always OnAlways On availability groups, che non è a conoscenza della loro esistenza né del loro funzionamento.Such time-outs are independent of Gruppi di disponibilità Always OnAlways On availability groups, which has no knowledge of them and is completely unaware of their behavior. In questi casi, il ritardo di timeout aumenta il tempo che intercorre tra il verificarsi di un errore e la ricezione del corrispondente errore hardware da parte della replica di disponibilità.In these cases, the time-out delay increases the time between a failure and when the availability replica receives the resulting hard error.

Nota

L'unico controllo degli errori attivo eseguito per le repliche di disponibilità si verifica per i casi di errori software.The only active error checking performed for availability replicas occurs for soft error cases. Per ulteriori informazioni, vedere "Errori provocati da errori software" di seguito in questo argomento.For more information, see "Failures Due to Soft Errors," later in this topic.

Per interpretare correttamente le condizioni di errore che si verificano nella rete, richiedere a un tecnico della rete di indicare quali messaggi di errore vengono inviati a una porta quando si verificano gli eventi seguenti in una connessione TCP:To help you interpret the error conditions that occur on the network, ask a network engineer what error messages are sent to a port when the following events occur on a TCP connection:

  • DNS non funziona correttamente.DNS is not working.

  • I cavi sono scollegati.Cables are unplugged.

  • MicrosoftMicrosoft Windows blocca una porta specifica. Windows has a firewall that blocks a specific port.

  • Si è verificato un errore nell'applicazione che esegue il monitoraggio di una porta.The application that is monitoring a port fails.

  • Un server Windows è stato rinominato.A Windows-based server is renamed.

  • Un server Windows è stato riavviato.A Windows-based server is rebooted.

Nota

Gruppi di disponibilità AlwaysOnAlways On Availability Groups non fornisce protezione da problemi specifici dei client che accedono ai server. does not protect against problems specific to client accessing the servers. Si consideri, ad esempio, un caso in cui una scheda di rete pubblica gestisce le connessioni client alla replica primaria, mentre una scheda di interfaccia di rete privata gestisce il traffico tra le istanze del server che ospitano le repliche di un gruppo di disponibilità.For example, consider a case in which a public network adapter handles client connections to the primary replica, while a private network interface card handles traffic among the server instances that are hosting the replicas of an availability group. In questo caso, l'errore della scheda di rete pubblica impedirebbe l'accesso dei client al database.In this case, failure of the public network adapter would prevent clients from accessing the databases.

Errori provocati da errori softwareFailures Due to Soft Errors

Di seguito vengono riportate alcune possibili cause dei timeout della sessione:Conditions that might cause session timeouts include (but are not limited to) the following:

  • Errori di rete, ad esempio timeout di collegamenti TCP, pacchetti ignorati, danneggiati o in ordine errato.Network errors such as TCP link time-outs, dropped or corrupted packets, or packets that are in an incorrect order.

  • Blocco del sistema operativo, di un server o di uno stato del database.A hanging operating system, server, or database state.

  • Timeout di un server Windows.A Windows server timing out.

  • Risorse di elaborazione insufficienti, ad esempio overload della CPU o del disco, esaurimento dello spazio del log delle transazioni o esaurimento della memoria o dei thread di sistema.Insufficient computing resources, such as a CPU or disk overload, the transaction log filling up, or the system is running out of memory or threads. In questi casi è necessario aumentare il periodo di timeout, ridurre il carico di lavoro o cambiare l'hardware per gestire il carico di lavoro.In these cases, you must increase the time-out period, reduce the workload, or change the hardware to handle the workload.

Meccanismo di timeout della sessioneThe Session-Timeout Mechanism

Poiché gli errori software non sono direttamente rilevabili da un'istanza del server, un errore software potrebbe potenzialmente causare che una replica di disponibilità attenda indefinitamente la risposta dell'altra replica di disponibilità in una sessione.Because soft errors are not detectable directly by a server instance, a soft error could potentially cause an availability replica to wait indefinitely for a response from the other availability replica in a session. Per evitare questo problema, Gruppi di disponibilità Always OnAlways On availability groups implementa un meccanismo di timeout della sessione in base alle repliche di disponibilità connesse che inviano un ping a ogni connessione aperta a intervalli fissi.To prevent this, Gruppi di disponibilità Always OnAlways On availability groups implements a session time-out mechanism, based on the connected availability replicas sending out a ping on each open connection at a fixed interval. La ricezione di un ping durante il periodo di timeout indica che la connessione è ancora aperta e che le istanze del server comunicano attraverso tale connessione.Receiving a ping during the time-out period indicates that the connection is still open and that the server instances are communicating over it. Quando riceve un ping, una replica reimposta il contatore del timeout su tale connessione.On receiving a ping, a replica resets its time-out counter on that connection. Per informazioni sulla relazione di timeout della modalità di disponibilità e della sessione, vedere Modalità di disponibilità (gruppi di disponibilità AlwaysOn).For information about the relationship of availability mode and session timeouts, see Availability Modes (Always On Availability Groups).

Le repliche primarie e secondarie effettuano vicendevolmente il ping per segnalare che sono ancora attive e un limite di timeout della sessione impedisce che la replica attenda indefinitamente la ricezione di un ping dall'altra replica.The primary and secondary replicas ping each other to signal that they are still active, and a session-timeout limit prevents either replica from waiting indefinitely to receive a ping from the other replica. Il limite di timeout della sessione è una proprietà della replica configurabile dall'utente con un valore predefinito di 10 secondi.The session-timeout limit is a user-configurable replica property with a default value of 10 seconds. La ricezione di un ping durante il periodo di timeout indica che la connessione è ancora aperta e che le istanze del server comunicano attraverso tale connessione.Receiving a ping during the time-out period indicates that the connection is still open and that the server instances are communicating over it. Alla ricezione di un ping, la replica di disponibilità reimposta il contatore del timeout per quella connessione.On receiving a ping, an availability replica resets its time-out counter on that connection.

Se non viene ricevuto alcun ping dall'altra replica entro il periodo di timeout della sessione, si verifica il timeout della connessione.If no ping is received from the other replica within the session-timeout period, the connection times out. La connessione viene chiusa e per la replica scaduta viene impostato lo stato DISCONNECTED.The connection is closed, and the timed-out replica enters the DISCONNECTED state. Anche se la replica disconnessa è configurata per la modalità con commit sincrono, le transazioni non attenderanno che quella replica venga riconnessa e risincronizzata.Even if a disconnected replica is configured for synchronous-commit mode, transactions will not wait for that replica to reconnect and resynchronize.

Risposta a un erroreResponding to an Error

Indipendentemente dal tipo di errore, un'istanza del server che rileva un errore esegue l'azione appropriata in base al proprio ruolo, alla modalità di disponibilità della sessione e allo stato delle altre connessioni della sessione.Regardless of the type of error, a server instance that detects an error responds appropriately based on the role of the instance, the availability mode of the session, and the state of any other connection in the session. Per informazioni sulle conseguenze della perdita di un partner, vedere Modalità di disponibilità (gruppi di disponibilità AlwaysOn).For information about what occurs on the loss of a partner, see Availability Modes (Always On Availability Groups).

Per modificare il valore di timeout (solo modalità di disponibilità con commit sincrono)To change the time-out value (synchronous-commit availability mode only)

Vedere ancheSee Also

Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server)Overview of Always On Availability Groups (SQL Server)