Possibili errori durante il mirroring del databasePossible Failures During Database Mirroring

Gli errori in una sessione di mirroring del database 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 database mirroring session. Il mirroring del database non controlla regolarmente i componenti sui quali Sqlservr.exe si basa per verificare se stiano funzionando correttamente o abbiano generato un errore.Database mirroring 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, il mirroring del database implementa un proprio meccanismo di timeout.To detect other failures that would otherwise go unnoticed, database mirroring implements its own time-out mechanism. Quando si verifica un timeout di mirroring, il mirroring del database presuppone che si sia verificato un errore e dichiara un errore software.When a mirroring time-out occurs, database mirroring assumes that a failure has occurred and declares a soft error. Tuttavia, alcuni errori che si verificano a livello dell'istanza di SQL Server non provocano il timeout del mirroring a timeout e possono non essere rilevati.However, some failures that happen at the SQL Server instance level do not cause mirroring to time-out and can go undetected.

Importante

In una sessione di mirroring del database non è possibile rilevare gli errori che si verificano nei database diversi da quello con mirroring.Failures in databases other than the mirrored database are not detectable in a database mirroring session. È 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 della sessione di mirroring 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 of the mirroring session 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 per il mirroring.For soft errors, the length of the mirroring time-out 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 principale 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 principal 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 dal mirroring del database, che non è a conoscenza della loro esistenza né del loro funzionamento.Such time-outs are independent of database mirroring, 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 del mirroring del database.In these cases, the time-out delay increases the time between a failure and when database mirroring receive the resulting hard error.

Nota

L'unico controllo degli errori attivo eseguito per il mirroring del database si verifica per i casi di errori software.The only active error checking performed for database mirroring 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

Il mirroring non fornisce protezione da problemi specifici dei client che accedono ai server.Mirroring 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 all'istanza del server principale, mentre una scheda di interfaccia di rete privata gestisce tutto il traffico di mirroring tra le istanze del server.For example, consider a case in which a public network adapter handles client connections to the principal server instance, while a private network interface card handles all mirroring traffic among server instances. In questo caso, l'errore della scheda di rete pubblica impedirebbe l'accesso dei client al database, anche senza interruzione del mirroring del database.In this case, failure of the public network adapter would prevent clients from accessing the database, though the database would continue to be mirrored.

Errori provocati da errori softwareFailures Due to Soft Errors

Di seguito vengono riportate alcune possibili cause dei timeout per il mirroring:Conditions that might cause mirroring time-outs 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 per il mirroringThe Mirroring Time-Out Mechanism

Poiché non sono direttamente rilevabili da un'istanza del server, gli errori software possono provocare l'attesa illimitata da parte di un'istanza del server.Because soft errors are not detectable directly by a server instance, a soft error could potentially cause a server instance to wait indefinitely. Per evitare questo problema, il mirroring del database implementa un proprio meccanismo di timeout in base al quale ogni istanza del server di una sessione di mirroring invia un ping a ogni connessione aperta a intervalli fissi.To prevent this, database mirroring implements its own time-out mechanism, based on each server instance in a mirroring session sending out a ping on each open connection at a fixed interval.

Per mantenere aperta una connessione, è necessario che un'istanza del server riceva un ping su tale connessione entro il periodo definito dalla somma del valore del timeout e del tempo necessario per l'invio del ping successivo.To keep a connection open, a server instance must receive a ping on that connection in the time-out period defined, plus the time that is required to send one more ping. 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, un'istanza del server reimposta il contatore del timeout su tale connessione.On receiving a ping, a server instance resets its time-out counter on that connection.

Se durante il periodo di timeout non vengono ricevuti ping in una connessione, l'istanza del server considera scaduta la connessione.If no ping is received on a connection during the time-out period, a server instance considers the connection to have timed out. L'istanza del server chiude la connessione scaduta e gestisce l'evento di timeout a seconda dello stato e della modalità operativa della sessione.The server instance closes the timed-out connection and handles the time-out event according to the state and operating mode of the session.

Anche se l'altro server funziona correttamente, un timeout viene considerato un errore.Even if the other server is actually proceeding correctly, a time-out is considered a failure. Se il valore di timeout per una sessione è troppo breve rispetto alla normale velocità di risposta di uno dei due partner, possono verificarsi falsi errori.If the time-out value for a session is too short for the regular responsiveness of either partner, false failures can occur. Questo tipo di errore si verifica quando un'istanza del server riesce a contattarne un'altra il cui tempo di risposta è troppo breve per consentire la ricezione dei ping prima della scadenza del periodo di timeout.A false failure occurs when one server instance successfully contacts another whose response time is so slow that its pings are not received before the time-out period expires.

Nelle sessioni in modalità a prestazioni elevate, il periodo di timeout corrisponde sempre a 10 secondi.In high-performance mode sessions, the time-out period is always 10 seconds. Questa impostazione consente generalmente di evitare i falsi errori.This is generally enough to avoid false failures. Nelle sessioni in modalità a protezione elevata, il periodo di timeout predefinito è 10 secondi, ma può essere modificato.In high-safety mode sessions, the default time-out period is 10 seconds, but you can change the duration. Per evitare falsi errori, è consigliabile impostare il periodo di timeout per il mirroring su 10 secondi o più.To avoid false failures, we recommend that the mirroring time-out period always be 10 seconds or more.

Per modificare il valore di timeout (solo modalità a protezione elevata)To change the time-out value (high-safety mode only)

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à operativa 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 operating mode of the session, and the state of any other connection in the session. Per informazioni sulle conseguenze della perdita di un partner, vedere Database Mirroring Operating Modes.For information about what occurs on the loss of a partner, see Database Mirroring Operating Modes.

Vedere ancheSee Also

Stimare l'interruzione del servizio durante il cambio di ruolo (mirroring del database) Estimate the Interruption of Service During Role Switching (Database Mirroring)
Modalità di funzionamento del mirroring del database Database Mirroring Operating Modes
Cambio di ruolo durante una sessione di mirroring del database (SQL Server) Role Switching During a Database Mirroring Session (SQL Server)
Mirroring del database (SQL Server)Database Mirroring (SQL Server)