Cambio di ruolo durante una sessione di mirroring del database (SQL Server)Role Switching During a Database Mirroring Session (SQL Server)

Nel contesto di una sessione di mirroring del database, in genere i ruoli principale e mirror sono intercambiabili tramite un processo denominato cambio di ruolo.Within the context of a database mirroring session, the principal and mirror roles are typically interchangeable in a process known as role switching. Nel cambio di ruolo, il server mirror funge da partner di failover per il server principale, assumendo il ruolo principale e recuperando la propria copia del database e portandola online come nuovo database principale.In role switching, the mirror server acts as the failover partner for the principal server, taking over the principal role, recovering its copy of the database and bringing it online as the new principal database. Il server principale precedente, quando disponibile, assume il ruolo di mirror, e il suo database diventa il nuovo database mirror.The former principal server, when available, assumes the mirror role, and its database becomes the new mirror database. Potenzialmente, i ruoli possono essere scambiati nei due sensi in seguito a più errori o per scopi amministrativi.Potentially, the roles can switch back and forth either in response to multiple failures or for administrative purposes.

Nota

In questo argomento si parte dal presupposto che l'utente conosca le modalità operative per il mirroring del database.This topic assumes that you are familiar with the database mirroring operating modes. Per altre informazioni, vedere Database Mirroring Operating Modes.For more information, see Database Mirroring Operating Modes.

La figura seguente illustra i partner di mirroring, Partner_A e Partner_B, che eseguono lo scambio dei ruoli principale e mirror su una serie di failover automatici o manuali.The following illustration shows mirroring partners, Partner_A and Partner_B, switching the principal and mirror roles over a series of automatic or manual failovers.

Due scambi di ruoli tra i partnerPartners switching twice between roles

Importante

Dopo un cambio di ruolo, i processi eseguiti nel precedente database principale devono essere ricreati sul nuovo server principale affinché possano essere eseguiti nella nuova posizione.After a role switch, jobs that ran on the former principal database must be recreated on the new principal server to run there. Per altre informazioni, vedere Gestione di account di accesso e di processi dopo un cambio di ruolo (SQL Server).For more information, see Management of Logins and Jobs After Role Switching (SQL Server).

Esistono tre forme di cambio di ruolo: failover automatico, failover manuale e servizio forzato (con possibile perdita di dati).Three types of role switching exist: automatic failover, manual failover, and forced service (with possible data loss). Il supporto di ogni forma dipende dalla modalità operativa della sessione.Support for each form depends on the operating mode of the session.

Nota

Se non si ha familiarità con queste modalità operative, vedere Modalità di funzionamento del mirroring del database.If you are unfamiliar with these operating modes, see Database Mirroring Operating Modes.

  • Failover manualeManual failover

    Con la modalità a sicurezza elevata è supportato il failover manuale.High-safety mode supports manual failover. A ogni sincronizzazione del database, il proprietario del database può avviare un failover manuale.Whenever the database is synchronized, the database owner can initiate a manual failover.

    Il failover manuale è disponibile a scopo di amministrazione.Manual failover is provided for administrative purposes. Per altre informazioni, vedere Failover manualepiù avanti in questo argomento.For more information, see Manual Failover, later in this topic.

  • Failover automaticoAutomatic failover

    In presenza di un server di controllo del mirroring, con la modalità a sicurezza elevata è supportato il failover automatico.In the presence of a witness, high-safety mode supports automatic failover. Il failover automatico si verifica solo in caso di perdita del server principale se il server di controllo del mirroring e il server mirror sono ancora connessi tra loro e il database è già sincronizzato.Automatic failover occurs only on the loss of the principal server when the witness and mirror server are still connected to each other and the database is already synchronized. Per altre informazioni, vedere Failover automaticopiù avanti in questo argomento.For more information, see Automatic Failover, later in this topic.

  • Servizio forzato (con possibile perdita di dati)Forced service (with possible data loss)

    L'utilizzo forzato del servizio è supportato in modalità a sicurezza elevata quando nessun server di controllo del mirroring è impostato e in modalità a prestazioni elevate.Forcing service is supported in high-safety mode when no witness is set and in high-performance mode. Quando il server principale viene perso, il proprietario del database può rendere il database disponibile forzando il servizio per il server mirror (con possibile perdita di dati).On the loss of the principal server, the database owner can make the database available by forcing service to the mirror server (with possible data loss).

    Nota

    È consigliabile impostare la proprietà WITNESS su OFF in modalità a prestazioni elevate.We recommend that the WITNESS property be set to OFF in high-performance mode. In caso contrario, per portare il database online, è necessario che il server mirror sia connesso al server di controllo del mirroring.Otherwise, to bring the database online, the mirror server must connected to the witness.

    Per altre informazioni, vedere Servizio forzato (con possibile perdita di dati)più avanti in questo argomento.For more information, see Forced Service (with Possible Data Loss), later in this topic.

    Nella tabella seguente viene presentato un riepilogo delle forme di failover supportate in ognuna delle modalità operative.The following table summarizes which forms of failover are supported under each of the operating modes.

Prestazioni elevateHigh performance Modalità a sicurezza elevata senza un server di controllo del mirroringHigh-safety mode without a witness Modalità a sicurezza elevata con un server di controllo del mirroringHigh-safety mode with a witness
Failover automaticoAutomatic failover NoNo NoNo Yes
Failover manualeManual failover NoNo Yes Yes
Servizio forzatoForced service Yes Yes NoNo

Dopo un cambio di ruolo è necessario che alcuni metadati siano disponibili su entrambi i partner per garantire che tutti gli utenti del database possano accedere al nuovo database principale.After a role switch, certain metadata must exist on both partners to ensure that all of the database users can access the new principal database. È inoltre necessario che i processi di backup vengano creati sul nuovo server principale per garantire che i backup del database continuino regolarmente in base alla pianificazione.In addition, backup jobs must be created on the new principal server, to ensure that the database continues to be backed up on its regular schedule. Per altre informazioni, vedere Gestione di account di accesso e di processi dopo un cambio di ruolo (SQL Server).For more information, see Management of Logins and Jobs After Role Switching (SQL Server).

Durante un cambio di ruolo, il periodo di tempo durante il quale il mirroring del database non sarà disponibile dipende dal tipo e dalla causa del cambio di ruolo.During a role switch, the amount of time that database mirroring will be out of service depends on the type of role switching and on the cause. Per altre informazioni, vedere Stimare l'interruzione del servizio durante il cambio di ruolo (mirroring del database).For more information, see Estimate the Interruption of Service During Role Switching (Database Mirroring).

Manual Failover Manual Failover

Il failover manuale disconnette i client dal database e inverte i ruoli dei partner.Manual failover disconnects the clients from the database and reverses the roles of the partners. Solo la modalità a sicurezza elevata supporta il failover manuale.Only high-safety mode supports manual failover.

Contenuto della sezioneIn This Section:

Mantenimento della disponibilità durante gli aggiornamenti Maintaining Availability During Upgrades

L'amministratore del database può utilizzare il failover manuale per aggiornare l'hardware o il software senza ridurre la disponibilità.The database administrator can use manual failover for upgrading hardware or software without sacrificing availability. Per eseguire aggiornamenti del software mediante il mirroring del database, è necessario che il server mirror e/o il sistema ricevano precedentemente gli aggiornamenti.To use database mirroring for software upgrades, the mirror server and/or system must have already received the upgrades.

Nota

Il mirroring del database dovrebbe consentire l'esecuzione di un aggiornamento in sequenza. Questo non è tuttavia garantito poiché le modifiche future non sono ancora note.Database mirroring should be able to do a rolling upgrade, but this is not guaranteed, because future changes are unknown. Per altre informazioni, vedere Upgrading Mirrored Instances(Aggiornamento di istanze con mirroring).For more information, see Upgrading Mirrored Instances.

Nella figura seguente è illustrato un esempio di utilizzo del failover manuale per mantenere la disponibilità del database mentre si aggiorna un'istanza del server di database.The following figure illustrates an instance of using manual failover to maintain database availability while you upgrade a database server instance. Al termine dell'aggiornamento, un amministratore può eseguire facoltativamente il failover all'istanza del server originale.When the upgrade is completed, an administrator may optionally fail over back to the original server instance. Questa operazione è utile se l'amministratore desidera arrestare la sessione di mirroring e utilizzare il server mirror in un'altra posizione.This is useful when the administrator wants to stop the mirroring session and use the mirror server elsewhere. In questo modo, è possibile utilizzare ripetutamente una singola istanza del server per aggiornare una serie di istanze del server di database.In this way, a single server instance can be used repeatedly when updating a series of database server instances.

Failover manuale pianificatoPlanned manual failover

Condizioni necessarie per un failover manuale Conditions Required for a Manual Failover

Per il failover manuale, è necessario che il livello di protezione delle transazioni sia impostato su FULL (ovvero in modalità a protezione elevata).Manual failover requires transaction safety to be set to FULL (that is, high-safety mode). Se i partner sono connessi e il database è già sincronizzato, è supportato il failover manuale.When the partners are connected and the database is already synchronized, manual failover is supported.

Funzionamento del failover manuale How Manual Failover Works

Il failover manuale inizia la sequenza di azioni seguente:Manual failover initiates the following sequence of actions:

  1. Il server principale disconnette i client dal database principale, invia la parte finale del log al server mirror e, in vista del passaggio al ruolo di server mirror, imposta lo stato di mirroring su SYNCHRONIZING.The principal server disconnects clients from the principal database, sends the tail of the log to the mirror server, and, in preparation for switching to the mirror role, sets the mirroring state to SYNCHRONIZING.

  2. Il server mirror registra il numero di sequenza del file di log (LSN) relativo all'ultimo record del log ricevuto dal server principale come LSN di failover.The mirror server records the log sequence number (LSN) of the last log record received from the principal as the failover LSN.

    Nota

    Per visualizzare questo LSN, selezionare la colonna mirroring_failover_lsn da sys.database_mirroring (Transact-SQL).To view this LSN, select the mirroring_failover_lsn column from sys.database_mirroring (Transact-SQL).

  3. Se un log è in attesa nella coda di rollforward, il server mirror termina il rollforward del database mirror.If any log is waiting in the redo queue, the mirror server finishes rolling forward the mirror database. La quantità di tempo necessaria varia in base alla velocità del sistema, al carico di lavoro recente e alle dimensioni del log nella coda di rollforward.The amount of time required depends on the speed of the system, the recent workload, and the amount of log in the redo queue. Per la modalità operativa sincrona, è possibile regolare il tempo di failover limitando le dimensioni della coda di rollforward.For a synchronous operating mode, the failover time can be regulated by limiting the size of the redo queue. Tale operazione, tuttavia, può causare un rallentamento del server principale a vantaggio della velocità del server mirror.However, this can cause the principal server to slow down to allow the mirror server to keep up.

    Nota

    Per visualizzare le dimensioni correnti della coda di rollforward, usare il contatore delle prestazioni Redo Queue (Coda di rollforward) nell'oggetto prestazioni del mirroring del database. Per altre informazioni, vedere Monitoraggio del mirroring del database (SQL Server).To learn the current size of the redo queue, use the Redo Queue performance counter in the database mirroring performance object (for more information, see Monitoring Database Mirroring (SQL Server)).

  4. Il server mirror diventa il nuovo server principale, mentre il server principale precedente diventa il nuovo server mirror.The mirror server becomes the new principal server, and the former principal server becomes the new mirror server.

  5. Il nuovo server principale esegue il rollback delle eventuali transazioni di cui non è stato eseguito il commit e porta online la copia interna del database come database principale.The new principal server rolls back any uncommitted transactions and brings its copy of the database online as the principal database.

  6. Il server principale precedente assume il ruolo di server mirror e il database principale precedente diventa il database mirror.The former principal takes on the mirror role, and the former principal database becomes the mirror database. Il nuovo server mirror risincronizza rapidamente il nuovo database mirror con il nuovo database principale.The new mirror server quickly resynchronizes the new mirror database with the new principal database.

    Nota

    Nell'istante stesso in cui il nuovo server mirror ha ristabilito la sincronizzazione dei database, il failover è nuovamente possibile, stavolta nella direzione inversa.As soon as the new mirror server has resynchronized the databases, failover is again possible, but in the reverse direction.

    Dopo il failover, i client devono riconnettersi al database principale corrente.After failover, clients must reconnect to the current principal database. Per altre informazioni, vedere Connettere client a una sessione di mirroring del database (SQL Server).For more information, see Connect Clients to a Database Mirroring Session (SQL Server).

    Per iniziare il failover manualeTo initiate manual failover

Automatic Failover Automatic Failover

Il failover automatico è supportato esclusivamente nelle sessioni di mirroring del database in esecuzione con un server di controllo del mirroring in modalità a protezione elevata (modalità a protezione elevata con failover automatico).Automatic failover is supported only in database mirroring sessions running with a witness in high-safety mode (high-safety mode with automatic failover). In modalità a protezione elevata con failover automatico, dopo la sincronizzazione del database, se il database principale risulta non disponibile, si verifica un failover automatico.In high-safety mode with automatic failover, once the database is synchronized, if the principal database becomes unavailable, an automatic failover occurs. In seguito a questo processo, il server mirror assume il ruolo di server principale e attiva la modalità online per la propria copia del database come database principale.An automatic failover causes the mirror server to take over the role of principal server and bring its copy of the database online as the principal database. La sincronizzazione del database impedisce la perdita di dati durante il failover, poiché per ogni transazione di cui è stato eseguito il commit nel database principale viene eseguito il commit anche nel database mirror.Requiring that the database be synchronized prevents data loss during failover, because every transaction committed on the principal database is also committed on the mirror database.

Importante

Affinché il failover automatico garantisca una maggiore affidabilità, è necessario che il database mirror e principale si trovino in computer diversi.For automatic failover to improve reliability, the mirror and principal databases must reside on different computers.

Contenuto della sezioneIn This Section:

Condizioni necessarie per un failover automatico Conditions Required for an Automatic Failover

Per l'esecuzione del failover automatico è necessario che si verifichino le condizioni seguenti:Automatic failover requires the following conditions:

  • La sessione di mirroring del database deve essere in esecuzione in modalità a protezione elevata e deve disporre di un server di controllo del mirroring.The database mirroring session must be running in high-safety mode and must possess a witness. Per altre informazioni, vedere Database Mirroring Operating Modes.For more information, see Database Mirroring Operating Modes.

  • Il database mirror deve essere già stato sincronizzato.The mirror database must already be synchronized. Questa condizione garantisce che il log inviato al server mirror sia stato interamente scritto su disco.This guarantees that all of the log sent to the mirror server has been written to disk.

  • Le comunicazioni tra il server principale e gli altri componenti della configurazione di mirroring del database sono state interrotte, mentre il server mirror e il server di controllo del mirroring mantengono il quorum.The principal server has lost communication with the rest of the database mirroring configuration, while the mirror and witness retain quorum. Tuttavia, se si interrompe la comunicazione tra tutte le istanze del server e in un momento successivo il server di controllo del mirroring e il server mirror tornano a comunicare, il failover automatico non si verifica.If all server instances lose communication, however, and the witness and the mirror server later regain communication, automatic failover does not occur.

  • Il server mirror ha rilevato la perdita del server principale.The mirror server has detected the loss of the principal server.

    La modalità in base a cui il server mirror rileva un errore del server principale varia a seconda che si tratti di un errore hardware o software.How the mirror server detects a failure of the principal server depends on whether it is a hard or soft failure. Per altre informazioni, vedere Possibili errori durante il mirroring del database.For more information, see Possible Failures During Database Mirroring.

Funzionamento del failover automatico How Automatic Failover Works

Se le condizioni riportate sopra sono soddisfatte, il failover automatico avvia la sequenza di azioni seguente:Under the preceding conditions, automatic failover initiates the following sequence of actions:

  1. Se il server principale è ancora in esecuzione, lo stato del database principale cambia in DISCONNECTED e tutti i client vengono disconnessi dal database principale.If the principal server is still running, it changes the state of the principal database to DISCONNECTED and disconnects all clients from the principal database.

  2. Il server di controllo del mirroring e il server mirror rilevano che il server principale non è disponibile.The witness and mirror servers register that the principal server is unavailable.

  3. Se un log è in attesa nella coda di rollforward, il server mirror termina il rollforward del database mirror.If any log is waiting in the redo queue, the mirror server finishes rolling forward the mirror database.

    Nota

    La quantità di tempo necessaria per applicare il log varia in base alla velocità del sistema, al carico di lavoro recente e alle dimensioni del log nella coda di rollforward.The amount of time required to apply the log depends on the speed of the system, the recent work load, and the amount of log in the redo queue.

  4. Viene attivata la modalità online per il database mirror precedente come nuovo database principale, mentre la procedura di recupero elimina tutte le transazioni di cui non è stato eseguito il commit eseguendone il rollback il più rapidamente possibile.The former mirror database moves online as the new principal database, and recovery cleans up all uncommitted transactions by rolling them back as quickly as possible. Vengono utilizzati blocchi per isolare tali transazioni.Locks isolate those transactions.

  5. Quando il server principale precedente partecipa nuovamente alla sessione, esso rileva che ora è il proprio partner di failover a detenere il ruolo di server principale.When the former principal server rejoins the session, it recognizes that its failover partner now owns the principal role. Il server principale precedente assume il ruolo di server mirror, rendendo la propria copia del database il nuovo database mirror.The former principal server takes on the role of mirror, making its database the mirror database. Il nuovo server mirror provvede il più rapidamente possibile a sincronizzare il nuovo database mirror con il database principale.The new mirror server synchronizes the new mirror database with the principal database as quickly as possible. Nell'istante stesso in cui il nuovo server mirror ha ristabilito la sincronizzazione dei database, il failover è nuovamente possibile, stavolta nella direzione inversa.As soon as the new mirror server has resynchronized the databases, failover is again possible, but in the reverse direction.

    Nella figura seguente viene illustrata una singola istanza di failover automatico.The following illustration shows a single instance of automatic failover.

    Failover automaticoAutomatic failover

    La sessione ha inizialmente un quorum completo, ovvero tutti e tre i server sono connessi.Initially, all three servers are connected (the session has full quorum). Partner_A è il server principale e Partner_B il server mirror.Partner_A is the principal server and Partner_B is the mirror server. Partner_A , o il database principale del Partner_A, diventa non disponibile.Partner_A (or the principal database on Partner_A) becomes unavailable. Sia il server di controllo del mirroring che Partner_B rilevano che il server principale non è più disponibile e la sessione mantiene il quorum.The witness and Partner_B both recognize that the principal is no longer available the session retains quorum. Partner_B diviene il server principale e rende disponibile la propria copia del database come nuovo database principale.Partner_B becomes the principal server and makes its copy of the database available as the new principal database. Quando si riconnette alla sessione, Partner_A individua che Partner_B detiene ora il ruolo di server principale.Eventually, Partner_A reconnects to the session and discovers that Partner_B now owns the principal role. Partner_A assume quindi il ruolo di server mirror.Partner_A then takes on the mirror role.

    Dopo il failover, i client devono riconnettersi al database principale corrente.After failover, clients must reconnect to the current principal database. Per altre informazioni, vedere Connettere client a una sessione di mirroring del database (SQL Server).For more information, see Connect Clients to a Database Mirroring Session (SQL Server).

Nota

Le transazioni che sono state preparate utilizzando MicrosoftMicrosoft Distributed Transaction Coordinator, ma di cui non è stato ancora eseguito il commit nel momento in cui si verifica un failover, vengono considerate interrotte dopo il failover del database.Transactions that have been prepared using the MicrosoftMicrosoft Distributed Transaction Coordinator but are still not committed when a failover occurs, are considered aborted after the database has failed over.

Per disabilitare il failover automatico (SQL Server Management Studio) To Disable Automatic Failover (SQL Server Management Studio)

Aprire la pagina Proprietà database - Mirroring e cambiare la modalità operativa selezionando una delle opzioni seguenti:Open the Database PropertiesMirroring page, and change the operating mode by selecting one of the following options:

  • Protezione elevata senza failover automatico (sincrona)High safety without automatic failover (synchronous)

    In questa modalità il database continua a essere sincronizzato e il failover manuale rimane possibile.In this mode, the database continues to be synchronized, and manual failover remains possible.

  • Prestazioni elevate (asincrona)High performance (asynchronous)

    In questa modalità il database mirror potrebbe avere un certo ritardo rispetto al database principale e il failover manuale non è più possibile.In this mode, the mirror database might lag somewhat behind the principal database, and manual failover is no longer possible.

Per disabilitare il failover automatico (Transact-SQL) To Disable Automatic Failover (Using Transact-SQL)

In un punto qualsiasi di una sessione di mirroring del database, il proprietario del database può disabilitare il failover automatico disabilitando il server di controllo del mirroring.At any point in a database mirroring session, the database owner can disable automatic failover by turning off the witness.

Per disabilitare il server di controllo del mirroringTo turn off the witness

Forced Service (with Possible Data Loss) Forced Service (with Possible Data Loss)

Il mirroring del database include l'utilizzo forzato del servizio (con possibile perdita di dati) come metodo di ripristino di emergenza per consentire l'utilizzo di un server mirror come server warm standby.Database mirroring provides forcing service (with possible data loss) as a disaster recovery method to allow you to use a mirror server as a warm standby server. Il servizio forzato è possibile solo se il server principale è disconnesso dal server mirror in una sessione di mirroring.Forcing service is possible only if the principal server is disconnected from the mirror server in a mirroring session. Dato che l'utilizzo forzato del servizio determina il rischio di possibili perdite di dati, è consigliabile utilizzarlo con cautela e quando strettamente necessario.Because forcing service risks possible data loss, it should be used cautiously and sparingly.

Il supporto per l'utilizzo forzato del servizio dipende dalla modalità operativa e dallo stato della sessione, come segue:Support for forced service depends on the operating mode and the state of the session, as follows:

  • In genere, la modalità a prestazioni elevate supporta l'utilizzo forzato del servizio ogniqualvolta il server principale è disconnesso.Typically, high-performance mode supports forcing service whenever the principal server is disconnected. Sebbene non sia necessario, è tuttavia possibile che un server di controllo del mirroring sia presente per una sessione in modalità a prestazioni elevate.However, though unnecessary, a witness can exist for a high-performance mode session. In questo caso, l'utilizzo forzato del servizio richiede che il server mirror e il server di controllo del mirroring siano connessi tra loro.In this case, forcing service requires that the mirror server and witness are connected to each other.

  • La modalità a protezione elevata senza failover automatico supporta l'utilizzo forzato del servizio ogniqualvolta il server principale è disconnesso.High-safety mode without automatic failover supports forcing service whenever the principal server is disconnected.

  • La modalità a protezione elevata con failover automatico supporta l'utilizzo forzato del servizio ogniqualvolta il server mirror e il server di controllo del mirroring sono connessi tra loro e nessuno dei due è connesso al server principale, a condizione che sul server mirror non sia in corso il rollback del database mirror al momento dell'ultima connessione al server principale.High-safety mode with automatic failover supports forcing service whenever the mirror server and witness are connected to each other and neither is connected to the principal server (as long as the mirror server was not in the process of rolling back the mirror database when it was last connected to the principal).

    È consigliabile forzare il servizio solo se è necessario ripristinare immediatamente il servizio sul database e si è disposti a rischiare la perdita di dati.We recommend forcing service only if you must restore service to the database immediately and are willing to risk losing data. L'utilizzo forzato del servizio ha un effetto analogo alla rimozione del mirroring, ad eccezione del fatto che semplifica la risincronizzazione dei database quando il mirroring viene ripreso, con rischio di possibile perdita di dati.The effect of forcing service is similar to removing mirroring, except that forcing service facilitates resynchronizing the databases when mirroring is resumed, at the risk of possible data loss. L'utilizzo forzato del servizio avvia una transizione uniforme del ruolo principale al database mirror.Forcing service initiates a smooth transition of the principal role to the mirror database. Il server mirror assume il ruolo di server principale e rende immediatamente disponibile la propria copia del database ai client.The mirror server assumes the role of principal server and immediately serves its copy of the database to clients. Il nuovo database principale viene eseguito senza un mirror, ovvero senza mirroring.The new principal database runs without a mirror (that is, it runs exposed).

Importante

Se il server principale è stato semplicemente disconnesso dalla sessione di mirroring del database ed è ancora in esecuzione, è possibile che alcuni client continuino ad accedere al database principale originale.If the principal server was merely disconnected from the database mirroring session and is still running, some clients might continue to access the original principal database. Dopo aver forzato il servizio, è importante impedire ai client l'accesso al server principale originale.Before you force service, it is important to prevent clients from accessing the original principal server. In caso contrario, dopo l'utilizzo forzato del servizio, è possibile che il database principale originale e il database principale corrente vengano aggiornati in modo indipendente l'uno dall'altro.Otherwise, after service is forced, the original principal database and the current principal database could be updated independently of the other.

Contenuto della sezioneIn This Section:

Caso tipico di utilizzo forzato del servizio Typical Case of Forced Service

Nella figura seguente viene illustrato un caso tipico di utilizzo forzato del servizio (con possibile perdita di dati).The following figure illustrates a typical case of forced service (with possible data loss).

Forzatura del servizio con possibile perdita di datiForcing service with possible data loss

Come illustrato nella figura, il server principale originale, Partner_A, diventa non disponibile per il server mirror, Partner_B, causando la disconnessione del database mirror.In the figure, the original principal server, Partner_A, becomes unavailable to the mirror server, Partner_B, causing the mirror database to be disconnected. Dopo aver verificato che Partner_A non è disponibile ai client, l'amministratore del database forza il servizio, con possibilità di perdita di dati, su Partner_B.After ensuring that Partner_A is not available to clients, the database administrator forces service, with possible data loss, on Partner_B. Partner_B diventa il server principale e viene eseguito con il database esposto , ovvero senza mirroring.Partner_B becomes the principal server and runs with the database exposed (that is, unmirrored). A questo punto, i client possono riconnettersi a Partner_B.At this point, clients can reconnect to Partner_B.

Quando Partner_A diventa disponibile, riconnette il nuovo server principale, si riconnette alla sessione e assume il ruolo di mirror.When Partner_A becomes available, it reconnects to the new principal server, rejoining the session and assuming the mirror role. La sessione di mirroring viene sospesa immediatamente, senza sincronizzazione del nuovo database mirror.The mirroring session is suspended immediately, without having synchronized the new mirror database. La sospensione della sessione consente all'amministratore del database di decidere se riprendere la sessione o, in casi estremi, rimuovere il mirroring e tentare di salvare i dati dal database principale precedente.Suspending the session allows the database administrator to decide whether to resume the session or, in extreme cases, remove mirroring and attempt to salvage data from the former principal database. In questo caso, l'amministratore del database sceglie di riprendere il mirroring.In this case, the database administrator chooses to resume mirroring. A questo punto, Partner_A assume il ruolo di server mirror ed esegue il rollback del database principale originale dal momento dell'ultima transazione sincronizzata eseguita correttamente. Eventuali transazioni con commit che non siano state scritte sul disco del server mirror prima dell'utilizzo forzato del servizio vengono perdute.At that point, Partner_A takes over the role of mirror server and rolls back the former principal database to the point in time of the last successfully synchronized transaction; if any committed transactions were not written to disk on the mirror server before service was forced, they are lost. Partner_A esegue quindi il rollforward del nuovo database mirror applicando eventuali modifiche apportate al nuovo database principale dal momento in cui il server mirror precedente è diventato il nuovo server principale.Partner_A then rolls forward the new mirror database by applying any changes made on the new principal database since the former mirror server became the new principal server.

Nota

Sebbene la modalità a prestazioni elevate non ne richieda la presenza, se un server di controllo del mirroring è configurato, è possibile forzare il servizio solo se il server di controllo del mirroring è attualmente connesso al server mirror.Although high-performance mode does not require a witness, if one is configured, forcing service is possible only if the witness is currently connected to the mirror server.

Rischi correlati all'utilizzo forzato del servizio Risks of Forcing Service

È fondamentale comprendere che l'utilizzo forzato del servizio può causare la perdita di dati.It is essential to understand that forcing service can cause data loss. La perdita di dati è possibile in quanto il server mirror non è in grado di comunicare con il server principale e pertanto non può garantire che i due database siano sincronizzati.Data loss is possible because the mirror server cannot communicate with the principal server and, therefore, cannot guarantee that the two databases are synchronized. L'utilizzo forzato del servizio comporta l'avvio di un nuovo fork di recupero.Forcing service starts a new recovery fork. Poiché il database principale originale e il database mirror si trovano su fork di recupero diversi, ogni database includerà i dati che l'altro database non include. Il database principale originale include tutte le modifiche non inviate al database mirror precedente dalla sua coda di invio (il log non inviato). Il database mirror precedente include tutte le modifiche apportate dopo che il servizio è stato forzato.Because the original principal database and mirror database are on different recovery forks, each database now contains data that the other database does not: the original principal database contains whatever changes were not yet sent from its send queue to the former mirror database (the unsent log); the former mirror database contains whatever changes occur after service was forced.

Se il servizio viene forzato a causa di un errore del server principale, la potenziale perdita di dati dipende dal fatto che uno o più log delle transazioni non siano stati inviati al server mirror prima dell'errore.If service is forced because the principal server has failed, potential data loss is depends on whether any transaction logs were not sent to the mirror server before the failure. In modalità a protezione elevata, questo è possibile solo finché il database mirror viene sincronizzato.Under high-safety mode, this is possible only until the mirror database becomes synchronized. In modalità a prestazioni elevate, è sempre possibile la presenza di log non inviato accumulato.Under the high-performance mode, accumulated unsent log is always a possibility.

Le implicazioni dell'utilizzo forzato del servizio dipendono in parte dal fatto che la sessione disponga o meno di un server di controllo del mirroring:The implications of forcing service depend partly on whether the session has a witness:

  • In sua assenza, è possibile forzare il servizio se i partner vengono disconnessi, ad esempio, perché la relativa connessione di rete si interrompe.In the absence of a witness, service can be forced if the partners become disconnected, for example, because their network connection is broken. Se il server principale originale è ancora in esecuzione, entrambi i partner sono proprietari del ruolo principale.If the original principal server is still running, both partners own the principal role. I client che si connettono al nuovo server principale avranno accesso alla versione corrente del database, mentre i client che si connettono al server principale originale avranno accesso al database principale originale.Clients connecting to the new principal server will access the current version of the database, while clients connecting to the original principal server will access the original principal database. Questa situazione aumenta il rischio di perdita di dati.This situation increases the potential for data loss. Se ai partner è consentita la riconnessione, il server principale originale assume il ruolo di mirror e modifica lo stato del proprio database impostandolo su "recupero in corso," prima della sospensione del mirroring.If the partners are allowed to reconnect, the original principal server assumes the mirror role and changes the status of its database to "recovering," before mirroring is suspended. Se la sessione viene ripresa, le transazioni sul database principale originale i cui log si trovavano nella coda di invio al momento della disconnessione più recente vanno perdute.If the session is resumed, transactions on the original principal database whose log was in the send queue as of the most recent disconnection are lost. Vanno inoltre perdute eventuali transazioni verificatesi dopo l'utilizzo forzato del servizio.In addition, any the transactions that occurred after service was forced are also lost.

  • In presenza di un server di controllo del mirroring, se il server mirror viene disconnesso dal server principale e dal server di controllo del mirroring, finché questi ultimi rimangono connessi tra loro, il server principale è in esecuzione senza mirroring.In the presence of a witness, if the mirror server is disconnected from both the principal server and the witness, as long as the latter two remain connected to each other, the principal runs exposed. Se il server principale viene quindi disconnesso dal server di controllo del mirroring, smette di interagire con il database.If the principal server then becomes disconnected from the witness, it stops serving the database. Se successivamente il server mirror si riconnette al server di controllo del mirroring, diventa possibile l'utilizzo forzato del servizio.Thereafter, if the mirror server reconnects to the witness, forcing service becomes possible. Se il servizio viene forzato, tutte le modifiche apportate mentre il server principale originale era in esecuzione senza mirroring verranno perdute, se il server principale originale viene riconnesso.If service is forced, all the changes made while the original principal server was running exposed will be lost if the original principal server reconnects.

    Per altre informazioni, vedere Gestione della potenziale perdita di datipiù avanti in questo argomento.For more information, see Managing the Potential Data Loss, later in this topic.

Gestione della potenziale perdita di dati Managing the Potential Data Loss

Dopo l'utilizzo forzato del servizio, quando il server principale precedente è disponibile e supponendo che il relativo database non sia danneggiato, è possibile tentare di gestire la potenziale perdita di dati.After service is forced, once the former principal server is available, assuming that its database is undamaged, you can attempt to manage the potential data loss. La tecnica disponibile per la gestione della potenziale perdita di dati dipende dal fatto che il server principale originale sia stato riconnesso al relativo partner e si sia ricollegato alla sessione di mirroring.The available approach for managing potential data loss depends on whether the original principal server has reconnected to its partner and rejoined the mirroring session. Supponendo che il server principale originale possa accedere alla nuova istanza principale, la riconnessione avviene in modo automatico e trasparente.Assuming that the original principal server can access the new principal instance, reconnecting occurs automatically and transparently.

Il server principale originale si è riconnessoThe Original Principal Server Has Reconnected

In genere, dopo un errore, al riavvio, il server principale originale si riconnette rapidamente al proprio partner.Typically, after a failure, when the original principal server restarts it quickly reconnects to its partner. Alla riconnessione, il server principale originale diventa il server mirror.On reconnecting, the original principal server becomes the mirror server. Il relativo database diventa il database mirror e assume lo stato di recupero prima che la sessione venga sospesa.Its database becomes the mirror database and enters the recovering state before the session is suspended. Per il database mirror non verrà eseguito il rollback a meno che non venga ripreso il mirroring.The mirror database will not be not rolled back unless you resume mirroring.

Il database in fase di recupero è tuttavia inaccessibile, pertanto non è possibile verificarlo per valutare i dati che andrebbero perduti in caso di ripresa del mirroring.However, the recovering database is inaccessible; therefore, you cannot inspect it to evaluate what data would be lost if you were to resume mirroring. Pertanto, la decisione relativa alla ripresa o alla rimozione del mirroring dipende dal fatto che sia accettabile o meno l'eventuale perdita di dati.Therefore, the decision on whether to resume or remove mirroring depends on whether you are willing to accept any data loss at all.

  • Se la perdita di dati non è accettabile, rimuovere il mirroring per salvare i dati.If losing any data would be unacceptable, you should remove mirroring to salvage them.

    La rimozione del mirroring consentirà all'amministratore del database di recuperare il database principale originale e di tentare di recuperare i dati a rischio di perdita.Removing mirroring would allow the database administrator to recover the original principal database and attempt to recover the data that would have been lost. Tuttavia, quando il database mirror precedente torna online, i partner precedenti interagiranno con database divergenti con lo stesso nome.However, when the former mirror database comes online, the former partners will be serving divergent databases with the same name. L'amministratore del database deve rendere uno dei database inaccessibile ai client per evitare ulteriori divergenze del database e per impedire problemi di failover dei client.The database administrator needs to make one of the databases inaccessible to clients to avoid further divergence of the database and to prevent client-failover issues.

  • Se la perdita di dati è accettabile, è possibile riprendere il mirroring.If losing any data would be acceptable, you can resume mirroring.

    La ripresa del mirroring determina il rollback del nuovo database mirror come primo passaggio della sincronizzazione del database.Resuming mirroring causes the new mirror database to be rolled back as the first step in synchronizing the database. Se nella coda di invio erano in attesa record di log al momento dell'errore, le transazioni corrispondenti vengono perdute, anche se con commit.If any log records were waiting in the send queue at the time of failure, the corresponding transactions are lost, even if they were committed.

Il server principale originale non si è riconnessoThe Original Principal Server Has Not Reconnected

Se è possibile impedire temporaneamente la riconnessione sulla rete del server principale originale al nuovo server principale, è possibile esaminare il server principale originale per valutare quali dati andrebbero perduti in caso di ripresa del mirroring.If you can temporarily prevent the original principal server from reconnecting over the network to the new principal server, you can inspect the original principal database to evaluate what data would be lost if mirroring were resumed.

  • Contesti in cui la perdita di dati è accettabileIf the potential data loss is acceptable

    Consentire la riconnessione al partner del server principale originale.Allow the original principal server to reconnect to its partner. La riconnessione determina la sospensione del mirroring.Reconnecting causes mirroring to be suspended. Per procedere con il mirroring, riprendere la sessione.To proceed with mirroring, simply resume the session. Il server principale precedente assume il ruolo di mirror.The former principal server assumes the mirror role. Il nuovo server mirror elimina il fork di recupero originale, perdendo eventuali transazioni non inviate o ricevute dal server mirror precedente.The new mirror server drops the original recovery fork, losing any transactions that were never sent to or received by the former mirror server.

  • Contesti in cui la perdita di dati non è ammissibileIf the data loss is unacceptable

    Se il database principale originale contiene dati critici che andrebbero persi in caso di ripresa della sessione, è possibile preservare tali dati sul server principale originale rimuovendo il mirroring.If the original principal database contains critical data that would be lost if you resumed the session, you can preserve the data on the original principal server by removing mirroring. In tal caso è opportuno tentare di eseguire il backup della parte finale del log del server principale in questo punto.We recommend that you attempt to back up the tail of the principal's log at this point. Successivamente, è possibile aggiornare il database principale corrente (il precedente database mirror) esportando i dati da salvaguardare dal database principale originale e importandoli nel database principale corrente.Then, you can update the current principal (the former mirror database) by exporting the data you want to salvage from the original principal database and importing it into the current principal database. È consigliabile eseguire un backup completo del database aggiornato il più rapidamente possibile.We recommend taking a full database backup of the updated database as quickly as possible.

    Per riattivare il mirroring utilizzando il database aggiornato quale database principale iniziale, utilizzare questo backup (e almeno un backup del log successivo) per creare un nuovo database mirror.To re-establish mirroring with the updated database as the initial principal database, use this backup (and least one subsequent log backup) to create a new mirror database. È necessario applicare qualsiasi backup del log eseguito dopo la rimozione del mirroring.Every log backup taken after mirroring was removed must be applied. È pertanto consigliabile rimandare ulteriori backup del log del database principale fino all'avvio della nuova sessione di mirroring.Therefore, we recommend delaying additional log backups of the principal database until the new mirroring session starts.

Per forzare il servizioTo force service

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)
Possibili errori durante il mirroring del database Possible Failures During Database Mirroring
Connettere client a una sessione di mirroring del database (SQL Server) Connect Clients to a Database Mirroring Session (SQL Server)
Server di controllo del mirroring del database Database Mirroring Witness
Ripristini di database completi (modello di recupero con registrazione completa) Complete Database Restores (Full Recovery Model)
Modalità di funzionamento del mirroring del database Database Mirroring Operating Modes
Stati di mirroring (SQL Server)Mirroring States (SQL Server)