Modalità di funzionamento del mirroring del databaseDatabase Mirroring Operating Modes

In questo argomento vengono illustrate le modalità di funzionamento sincrona e asincrona per le sessioni di mirroring del database.This topic describes the synchronous and asynchronous operating modes for database mirroring sessions.

Nota

Per un'introduzione al mirroring del database, vedere Mirroring del database (SQL Server).For an introduction to database mirroring, see Database Mirroring (SQL Server).

Termini e definizioni Terms and Definitions

In questa sezione vengono introdotti alcuni termini fondamentali ai fini della comprensione dell'argomento.This section introduces a few terms that are central to this topic.

Modalità a prestazioni elevateHigh-performance mode
La sessione di mirroring del database viene eseguita in modo asincrono e utilizza unicamente il server principale e il server mirror.The database mirroring session operates asynchronously and uses only the principal server and mirror server. L'unica forma di cambio di ruolo è il servizio forzato (con possibile perdita di dati).The only form of role switching is forced service (with possible data loss).

Modalità a sicurezza elevataHigh-safety mode
La sessione di mirroring del database viene eseguita in modo asincrono e facoltativamente utilizza un server di controllo, nonché il server principale e il server mirror.The database mirroring session operates synchronously and, optionally, uses a witness, as well as the principal server and mirror server.

Livello di sicurezza delle transazioniTransaction safety
Proprietà del database specifica del mirroring che determina l'esecuzione della sessione di mirroring del database in modalità sincrona o asincrona.A mirroring-specific database property that determines whether a database mirroring session operates synchronously or asynchronously. Esistono due livelli di protezione: FULL e OFF.There are two safety levels: FULL and OFF.

ControlloWitness
Per l'utilizzo nella sola modalità a sicurezza elevata. Istanza facoltativa di SQL Server che consente al server mirror di stabilire se avviare un failover automatico.For use only with high-safety mode, an optional instance of SQL Server that enables the mirror server to recognize whether to initiate an automatic failover. A differenza dei due partner di failover, il server di controllo del mirroring non rende disponibile il database.Unlike the two failover partners, the witness does not serve the database. Il supporto del failover automatico è l'unico ruolo del server di controllo del mirroring.Supporting automatic failover is the only role of the witness.

Mirroring asincrono del database (modalità a prestazioni elevate)Asynchronous Database Mirroring (High-Performance Mode)

In questa sezione vengono descritti il funzionamento del mirroring del database asincrono, i casi in cui è consigliabile utilizzare la modalità a elevate prestazioni e le operazioni da effettuare in caso di errore del server principale.This section describes how asynchronous database mirroring works, when it is appropriate to use high-performance mode, and how to respond if the principal server fails.

Nota

La maggior parte delle edizioni di SQL Server 2017SQL Server 2017 supporta solo il mirroring del database sincrono ("solo sicurezza FULL").Most editions of SQL Server 2017SQL Server 2017 support only synchronous database mirroring ("Safety Full Only"). Per informazioni sulle edizioni che supportano completamente il mirroring del database, vedere "Disponibilità elevata (AlwaysOn)" in Edizioni e funzionalità supportate per SQL Server 2016.For information about editions that fully support database mirroring, see "High Availability (Always On)" in Editions and Supported Features for SQL Server 2016.

Quando il livello di protezione delle transazioni viene impostato su OFF, la sessione di mirroring del database opera in modo asincrono.When transaction safety is set to OFF, the database mirroring session operates asynchronously. Le operazioni asincrone supportano solo una modalità operativa, ovvero la modalità a prestazioni elevate.Asynchronous operation supports only one operating mode—high-performance mode. Questa modalità migliora le prestazioni, ma comporta una riduzione della disponibilità.This mode enhances performance at the expense of high availability. La modalità a prestazioni elevate utilizza solo il server principale e il server mirror.High-performance mode uses just the principal server and the mirror server. I problemi relativi al server mirror non hanno mai alcun impatto sul server principale.Problems on the mirror server never impact the principal server. In caso di perdita del server principale, il database mirror viene contrassegnato come DISCONNECTED, ma rimane disponibile come standby a caldo (warm standby).On the loss of the principal server, the mirror database is marked DISCONNECTED but is available as a warm standby.

La modalità a prestazioni elevate supporta solo una forma di cambio di ruolo, ovvero il servizio forzato (con possibile perdita dei dati), che prevede l'utilizzo del server mirror come server warm standby.High-performance mode, supports only one form of role switching: forced service (with possible data loss), which uses the mirror server as a warm standby server. Il servizio forzato rappresenta una delle risposte possibili all'errore del server principale.Forced service is one of the possible responses to the failure of the principal server. Poiché può verificarsi una perdita di dati, è consigliabile valutare altre alternative prima di forzare il servizio nel server mirror.Because data loss is possible, you should consider other alternatives before forcing service to the mirror. Per ulteriori informazioni, vedere Risposta agli errori del server principalepiù avanti in questo argomento.For more information, see Responding to Failure of the Principal, later in this topic.

Nella figura seguente viene illustrata la configurazione di una sessione con l'utilizzo della modalità a prestazioni elevate.The following figure shows the configuration of a session using high-performance mode.

Configurazione dei partner per una sessionePartner-only configuration of a session

In modalità a prestazioni elevate, non appena il server principale invia il log per una transazione al server mirror, il server principale invia una conferma al client, senza attendere un acknowledgement dal server mirror.In high-performance mode, as soon as the principal server sends the log for a transaction to the mirror server, the principal server sends a confirmation to the client, without waiting for an acknowledgement from the mirror server. Il commit delle transazioni viene eseguito senza attendere la scrittura su disco del log da parte del server mirror.Transactions commit without waiting for the mirror server to write the log to disk. L'operazione asincrona consente l'esecuzione del server principale con una latenza minima per le transazioni.Asynchronous operation permits the principal server to run with minimum transaction latency.

Il server mirror tenta di restare sincronizzato con i record del log inviati dal server principale.The mirror server attempts to keep up with the log records sent by the principal server. Il database mirror, tuttavia, è soggetto sempre a un certo ritardo rispetto al database principale. Il divario tra i database è in genere di entità ridotta,But the mirror database might lag somewhat behind the principal database, though typically the gap between the databases is small. ma può diventare significativo se il server principale è soggetto a un ingente carico di lavoro o se il sistema del server mirror è sottoposto a overload.However, the gap can become substantial if the principal server is under a heavy work load or the system of the mirror server is over loaded.

Contenuto della sezioneIn This Section:

Casi in cui la modalità a prestazioni elevate rappresenta la soluzione più appropriata When Is High-Performance Mode Appropriate?

La modalità a prestazioni elevate può essere utile in uno scenario di ripristino di emergenza in cui i server principale e mirror sono separati da una distanza significativa e in cui non si desidera che piccoli errori abbiano un impatto sul server principale.High-performance mode can be useful in a disaster-recovery scenario in which the principal and mirror servers are separated by a significant distance and where you do not want small errors to impact the principal server.

Nota

Il log shipping può fungere da integrazione al mirroring del database e offre un'alternativa utile al mirroring asincrono.Log shipping can be a supplement to database mirroring and is a favorable alternative to asynchronous database mirroring. Per informazioni sui vantaggi del log shipping, vedere Soluzioni a disponibilità elevata (SQL Server).For information about the advantages of log shipping, see High Availability Solutions (SQL Server). Per informazioni sull'uso del log shipping con il mirroring del database, vedere Mirroring del database e log shipping (SQL Server).For information on using log shipping with database mirroring, see Database Mirroring and Log Shipping (SQL Server).

Impatto di un server di controllo del mirroring in modalità a prestazioni elevate The Impact of a Witness on High-Performance Mode

Se si utilizza Transact-SQL per configurare la modalità a prestazioni elevate, quando la proprietà SAFETY è impostata su OFF è consigliabile impostare su OFF anche la proprietà WITNESS.If you use Transact-SQL to configure high-performance mode, whenever the SAFETY property is set to OFF, we strongly recommend that the WITNESS property also be set to OFF. Un server di controllo del mirroring può coesistere con la modalità a prestazioni elevate, ma non offre vantaggi e introduce un rischio.A witness can coexist with high-performance mode, but the witness provides no benefit and introduces risk.

Se il server di controllo del mirroring viene disconnesso dalla sessione quando uno dei partner si arresta, il database non sarà più disponibile.If the witness is disconnected from the session when either partner goes down, the database becomes unavailable. Questo funzionamento dipende dal fatto che, sebbene per la modalità a prestazioni elevate non sia necessario un server di controllo del mirroring, per la sessione è necessario un quorum costituito da due o più istanze del server.This is because, even though high-performance mode does not require a witness, if one is set, the session requires a quorum consisting of two or more server instances. Se la sessione perde il quorum, non può rendere disponibile il database.If the session losses quorum, it cannot serve the database.

Quando in una sessione in modalità a prestazioni elevate è impostato un server di controllo del mirroring, l'applicazione del quorum comporta quanto segue:When a witness is set in a high-performance mode session, the enforcement of quorum means that:

  • Se il server mirror viene perduto, il server principale deve essere connesso al server di controllo del mirroring.If the mirror server is lost, the principal server must be connected to the witness. In caso contrario, il server principale porta il proprio database offline finché il server di controllo del mirroring o il server mirror non si unisce nuovamente alla sessione.Otherwise, the principal server takes its database offline until either the witness or mirror server rejoins the session.

  • Se il server principale viene perduto, per forzare il servizio sul server mirror è necessario che il server mirror sia connesso al server di controllo del mirroring.If the principal server is lost, forcing service to the mirror server requires that the mirror server be connected to the witness.

Risposta agli errori del server principale Responding to Failure of the Principal

Quando si verifica un errore nel server principale, il proprietario del database può scegliere tra le operazioni seguenti:When the principal fails, the database owner has several choices, as follows:

  • Rendere il database non disponibile fino a quando il server principale non torna a essere nuovamente disponibile.Leave the database unavailable until the principal becomes available again.

    Se il database principale e il relativo log delle transazioni sono intatti, questa scelta consente di mantenere tutte le transazioni di cui è stato eseguito il commit, a fronte di una riduzione della disponibilità.If the principal database and its transaction log are intact, this choice preserves all of the committed transactions at the expense of availability.

  • Arrestare la sessione di mirroring del database, aggiornare manualmente il database e quindi avviare una nuova sessione di mirroring del database.Stop the database mirroring session, manually update the database, and then begin a new database mirroring session.

    Se il database principale viene perduto ma il server principale resta in esecuzione, tentare immediatamente di eseguire il backup della parte finale del log nel database principale.If the principal database is lost but the principal server is still running, immediately attempt to back up the tail of the log on the principal database. Se il backup della parte finale del log ha esito positivo, la rimozione del mirroring può rappresentare l'alternativa più efficace.If the tail-log backup succeeds, removing mirroring may be your best alternative. Dopo avere rimosso il mirroring, è possibile ripristinare il log nel database mirror precedente per mantenere tutti i dati.After removing mirroring, you can restore the log onto the former mirror database, which preserves all of the data.

    Nota

    Se il backup della parte finale del log ha esito negativo e non è possibile attendere il recupero del server principale, valutare la possibilità di forzare il servizio, operazione che consente di mantenere lo stato della sessione.If the tail-log backup failed and you cannot wait for the principal server to recover, consider forcing service, which has the advantage of maintaining the session state.

  • Forzare il servizio (con possibile perdita dei dati) nel server mirror.Force service (with possible data loss) on the mirror server.

    Il servizio forzato rappresenta esclusivamente un metodo di ripristino di emergenza e deve essere utilizzato solo se necessario.Forced service is strictly a disaster recovery method and should be used sparingly. È possibile forzare il servizio solo se il server principale non è attivo, la sessione è asincrona (la protezione delle transazioni è impostata su OFF) e non è attivo alcun server di controllo del mirroring (la proprietà WITNESS è impostata su OFF), oppure il server di controllo del mirroring è connesso al server mirror (ovvero è disponibile il quorum).Forcing service is possible only if the principal server is down, the session is asynchronous (transaction safety is set to OFF), and either the session does not have any witness (the WITNESS property is set to OFF) or the witness is connected to the mirror server (that is, they have quorum).

    Forzando il servizio si consente al server mirror di assumere il ruolo di server principale e di rendere disponibile la propria copia del database ai client.Forcing service causes the mirror server to assume the role of principal and serve its copy of the database for clients. Quando il servizio viene forzato, tutti i log delle transazioni non ancora inviati dal server principale al server mirror vengono perduti.When service is forced, whatever transaction logs the principal has not yet sent to the mirror server are lost. È pertanto consigliabile limitare il servizio forzato alle situazioni in cui la perdita dei dati rappresenta un'opzione accettabile e la disponibilità immediata del database è un fattore critico.Therefore, you should limit forced service to situations where possible data loss is acceptable and immediate database availability is critical. Per informazioni sul funzionamento del servizio forzato e sulle procedure di utilizzo consigliate, vedere Cambio di ruolo durante una sessione di mirroring del database (SQL Server).For information on how forced service works and on best practices for using it, see Role Switching During a Database Mirroring Session (SQL Server).

Mirroring sincrono del database (modalità a sicurezza elevata) Synchronous Database Mirroring (High-Safety Mode)

In questa sezione vengono descritti il funzionamento del mirroring del database sincrono e le modalità a protezione elevata alternative (con o senza failover automatico), incluse alcune informazioni sul ruolo del server di controllo del mirroring nel failover automatico.This section describes how synchronous database mirroring works, including the alternative high-safety modes (with automatic failover and without automatic failover), and contains information about the role of the witness in automatic failover.

Quando il livello di sicurezza delle transazioni viene impostato su FULL, la sessione di mirroring del database viene eseguita in modalità a sicurezza elevata ed opera in modo sincrono dopo una fase di sincronizzazione iniziale.When transaction safety is set to FULL, the database mirroring session runs in high-safety mode and operates synchronously after an initial synchronizing phase. In questa sezione vengono fornite informazioni dettagliate sulle sessioni di mirroring del database configurate per il funzionamento sincrono.This section describes the details of database mirroring sessions that are configured for synchronous operation.

Per ottenere il funzionamento sincrono per una sessione, è necessario che tramite il server mirror vengano sincronizzati il database mirror e il database principale.To achieve synchronous operation for a session, the mirror server must synchronize the mirror database with the principal database. All'avvio della sessione, il server principale inizia a inviare il proprio log attivo al server mirror.When the session begins, the principal server begins sending its active log to the mirror server. Appena possibile, il server mirror scrive sul disco tutti i record di log in ingresso.The mirror server writes all of the incoming log records to disk as quickly as possible. Non appena tutti i record di log ricevuti sono stati scritti su disco, i database vengono sincronizzati.As soon as all of the received log records have been written to disk, the databases are synchronized. I database rimangono sincronizzati fino a quando i partner restano in comunicazione.As long as the partners remain in communication, the databases remain synchronized.

Nota

Per monitorare le modifiche dello stato in una sessione di mirroring del database, utilizzare la classe di evento Database Mirroring State Change .To monitor state changes in a database mirroring session, use the Database Mirroring State Change event class. Per altre informazioni, vedere Database Mirroring State Change Event Class.For more information, see Database Mirroring State Change Event Class.

Al termine della sincronizzazione, per ogni transazione di cui viene eseguito il commit nel database principale viene eseguito il commit anche nel server mirror, a garanzia della protezione dei dati.After synchronization finishes, every transaction committed on the principal database is also committed on the mirror server, guaranteeing protection of the data. A tale scopo, per l'esecuzione del commit di una transazione nel database principale si attende fino a quando il server principale riceve un messaggio dal server mirror indicante il consolidamento del log della transazione nel disco.This is achieved by waiting to commit a transaction on the principal database, until the principal server receives a message from the mirror server stating that it has hardened the transaction's log to disk. Si noti che l'attesa di tale messaggio comporta un aumento della latenza della transazione.Note the wait for this message increases the latency of the transaction.

Il tempo necessario per la sincronizzazione dipende essenzialmente dal ritardo del database mirror rispetto al database principale al momento dell'avvio della sessione, misurato in base al numero di record di log ricevuti inizialmente dal server principale, dal carico di lavoro nel database principale e dalla velocità del sistema mirror.The time required for synchronization depends essentially on how far the mirror database was behind the principal database at the start of the session (measured by the number of log records initially received from the principal server), the work load on the principal database, and the speed of the mirror system. Dopo la sincronizzazione di una sessione, il log consolidato del quale deve ancora essere eseguito il rollforward nel database mirror rimane nella coda di rollforward.After a session is synchronized, the hardened log that has yet to be redone on the mirror database remains in the redo queue.

Non appena il database mirror è sincronizzato, lo stato di entrambe le copie del database viene impostato come SYNCHRONIZED.As soon as the mirror database becomes synchronized, the state of both the copies of the database changes to SYNCHRONIZED.

Il funzionamento sincrono viene mantenuto nel modo seguente:Synchronous operation is maintained in the following manner:

  1. Quando riceve una transazione da un client, il server principale scrive il log per la transazione nel log delle transazioni.On receiving a transaction from a client, the principal server writes the log for the transaction to the transaction log.

  2. Il server principale scrive la transazione nel database e, contemporaneamente, invia il record di log al server mirror.The principal server writes the transaction to the database and, concurrently, sends the log record to the mirror server. Il server principale attende un acknowledgement dal server mirror prima di confermare al client il commit o il rollback di una transazione.The principal server waits for an acknowledgement from the mirror server before confirming either of the following to the client: a transaction commit or a rollback.

  3. Il server mirror consolida il log nel disco e restituisce un acknowledgement al server principale.The mirror server hardens the log to disk and returns an acknowledgement to the principal server.

  4. Quando riceve l'acknowledgement dal server mirror, il server principale invia un messaggio di conferma al client.On receiving the acknowledgement from the mirror server, the principal server sends a confirmation message to the client.

    La modalità a sicurezza elevata consente di proteggere i dati tramite la richiesta di sincronizzazione tra due posizioni.High-safety mode protects your data by requiring the data to be synchronized between two places. Tutte le transazioni di cui è stato eseguito il commit vengono scritte nel disco del server mirror.All the committed transactions are guaranteed to be written to disk on the mirror server.

    Contenuto della sezioneIn This Section:

Modalità a sicurezza elevata senza failover automatico High-Safety Mode Without Automatic Failover

Nella figura seguente viene illustrata la configurazione della modalità a sicurezza elevata senza failover automatico.The following figure shows the configuration of high-safety mode without automatic failover. La configurazione è composta solo dai due partner.The configuration consists of only the two partners.

Comunicazioni tra i partner senza un server di controllo del mirroringPartners communicating without a witness

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. Se l'istanza del server mirror si arresta, l'istanza del server principale non ne risentirà e verrà eseguita esposta, ovvero senza mirroring dei dati.If the mirror server instance goes down, the principal server instance is unaffected and runs exposed (that is without mirroring the data). Se il server principale viene perso, il mirroring viene sospeso, ma è possibile forzare manualmente il servizio nel server mirror, con possibile perdita di dati.If the principal server is lost, the mirror is suspended, but service can be forced to the mirror server (with possible data loss). Per altre informazioni, vedere Cambio di ruolo durante una sessione di mirroring del database (SQL Server)(Mirroring del database e log shipping).For more information, see Role Switching During a Database Mirroring Session (SQL Server).

Modalità a sicurezza elevata con failover automatico High-Safety Mode with Automatic Failover

Il failover automatico garantisce disponibilità elevata assicurando il servizio al database anche nel caso di perdita di un server.Automatic failover provides high availability by ensuring that the database is still served after the loss of one server. Per il failover automatico è necessario che la sessione disponga di una terza istanza del server, il server di controllo del mirroring, che idealmente dovrebbe trovarsi in un terzo computer.Automatic failover requires that the session possess a third server instance, the witness, which ideally resides on a third computer. Nella figura seguente viene illustrata la configurazione di una sessione in modalità a sicurezza elevata che supporta il failover automatico.The following figure shows the configuration of a high-safety mode session that supports automatic failover.

Server di controllo del mirroring e due partner di una sessioneThe witness and two partners of a session

A differenza dei due partner, il server di controllo del mirroring non serve il database,Unlike the two partners, the witness does not serve the database. ma supporta semplicemente il failover automatico mediante la verifica dell'efficienza del server principale.The witness simply supports automatic failover by verifying whether the principal server is up and functioning. Il server mirror avvia il failover automatico solo se il server mirror e il server di controllo del mirroring rimangono connessi tra loro dopo la disconnessione di entrambi dal server principale.The mirror server initiates automatic failover only if the mirror and the witness remain connected to each other after both have been disconnected from the principal server.

Quando viene impostato un server di controllo del mirroring, la sessione richiede il quorum, una relazione tra un minimo di due istanze del server che consente di rendere disponibile il database.When a witness is set, the session requires quorum—a relationship between at least two server instances that allows the database to be made available. Per altre informazioni, vedere Server di controllo del mirroring del database e Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database (mirroring del database).For more information, see Database Mirroring Witness and Quorum: How a Witness Affects Database Availability (Database Mirroring).

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

  • Il database è già sincronizzato.The database is already synchronized.

  • L'errore si verifica mentre tutte e tre le istanze del server sono connesse e il server di controllo del mirroring rimane connesso al server mirror.The failure occurs while all three server instances are connected, and the witness and mirror server remain connected.

    La perdita di un partner produce l'effetto seguente:The loss of a partner has the following effect:

  • Se il server principale non è più disponibile in base alle condizioni precedenti, si verifica il failover automatico.If the principal server becomes unavailable under the above conditions, automatic failover occurs. Il server mirror assume il ruolo di server principale e il relativo database diventa il database principale.The mirror server switches to the role of principal, and it offers its database as the principal database.

  • Se il server principale diventa non disponibile quando queste condizioni non sono soddisfatte, si potrebbe riuscire a forzare il servizio, con una possibile perdita di dati.If the principal server becomes unavailable when those conditions are not met, forcing service (with possible data loss) might be possible. Per altre informazioni, vedere Cambio di ruolo durante una sessione di mirroring del database (SQL Server).For more information, see Role Switching During a Database Mirroring Session (SQL Server).

  • Se solo il server mirror non è più disponibile, le attività nel server principale e nel server di controllo del mirroring continueranno.If the only mirror server becomes unavailable, the principal and witness continue.

    Se la sessione perde il relativo server di controllo del mirroring, per il quorum sono necessari entrambi i partner.If the session loses its witness, quorum requires both partners. Se uno dei partner perde il quorum, entrambi lo perdono e il database diventa non disponibile finché il quorum non viene ristabilito.If either partner loses quorum, both partners lose quorum, and the database becomes unavailable until quorum is re-established. Questo requisito di quorum garantisce che in assenza un server di controllo del mirroring il database non venga mai eseguito senza mirroring.This quorum requirement makes sure that in the absence of a witness the database never runs exposed, that is without being mirrored.

Nota

Se si prevede che il server di controllo del mirroring resterà disconnesso per un periodo di tempo prolungato, è consigliabile rimuoverlo dalla sessione finché non diventa disponibile.If you expect the witness to remain disconnected for a significant amount of time, we recommend that you remove the witness from the session until it becomes available.

Impostazioni di Transact-SQL e modalità operative del mirroring del database Transact-SQL Settings and Database Mirroring Operating Modes

In questa sezione viene descritta una sessione di mirroring del database in termini di impostazioni ALTER DATABASE e degli stati del database con mirroring e del server di controllo del mirroring, se presente.This section describes a database mirroring session in terms of the ALTER DATABASE settings and states of the mirrored database and witness, if any. Le informazioni di questa sezione sono rivolte agli utenti che gestiscono il mirroring del database utilizzando principalmente o esclusivamente Transact-SQLTransact-SQLanziché SQL Server Management StudioSQL Server Management Studio.The section is aimed at users who manage database mirroring primarily or exclusively using Transact-SQLTransact-SQL, rather than using SQL Server Management StudioSQL Server Management Studio.

Suggerimento

In alternativa a Transact-SQLTransact-SQL, è possibile controllare la modalità operativa di una sessione in Esplora oggetti mediante la pagina Mirroring della finestra di dialogo Proprietà database .As an alternative to using Transact-SQLTransact-SQL, you can control the operating mode of a session in Object Explorer using the Mirroring page of the Database Properties dialog box. Per ulteriori informazioni, vedere Stabilire una sessione di mirroring del database tramite autenticazione di Windows (SQL Server Management Studio).For more information, see Establish a Database Mirroring Session Using Windows Authentication (SQL Server Management Studio).

Contenuto della sezioneIn This Section:

Effetti della sicurezza delle transazioni e dello stato del server di controllo del mirroring sulla modalità operativa How Transaction Safety and Witness State Affect the Operating Mode

La modalità operativa di una sessione è determinata dalla combinazione dell'impostazione del livello di protezione delle transazioni e dello stato del server di controllo del mirroring.The operating mode of a session is determined by the combination of its transaction safety setting and the state of the witness. In qualsiasi momento, il proprietario del database può modificare il livello di sicurezza delle transazioni e aggiungere o rimuovere il server di controllo del mirroring.At any time, the database owner can change the transaction safety level, and can add or remove the witness.

Contenuto della sezioneIn This Section:

Transaction Safety Transaction Safety

Il livello di sicurezza delle transazioni è una proprietà del database specifica del mirroring che determina l'esecuzione della sessione di mirroring del database in modalità sincrona o asincrona.Transaction safety is a mirroring-specific database property that determines whether a database mirroring session operates synchronously or asynchronously. Esistono due livelli di protezione: FULL e OFF.There are two safety levels: FULL and OFF.

  • SAFETY FULLSAFETY FULL

    Il livello di sicurezza delle transazioni completo determina l'esecuzione della sessione in modo sincrono in modalità a sicurezza elevata.Full transaction safety causes the session to operate synchronously in high-safety mode. Se è presente un server di controllo del mirroring, una sessione supporta il failover automatico.If a witness is present, a session supports automatic failover.

    Quando si stabilisce una sessione utilizzando le istruzioni ALTER DATABASE, tale sessione inizia con la proprietà SAFETY impostata su FULL, ovvero in modalità a sicurezza elevata.When you establish a session using ALTER DATABASE statements, the session begins with the SAFETY property set to FULL; that is, the session begins in high-safety mode. Dopo l'inizio della sessione, è possibile aggiungere un server di controllo del mirroring.After the session begins, you can add a witness.

    Per altre informazioni, vedere Mirroring sincrono del database (modalità a sicurezza elevata), più indietro in questo argomento.For more information, see Synchronous Database Mirroring (High-Safety Mode), earlier in this topic.

  • SAFETY OFFSAFETY OFF

    La disabilitazione della sicurezza delle transazioni determina l'esecuzione della sessione in modalità asincrona a prestazioni elevate.Turning off transaction safety causes the session to operate asynchronously, in high-performance mode. Se la proprietà SAFETY è impostata su OFF, è necessario impostare sul valore predefinito OFF anche la proprietà WITNESS.If the SAFETY property is set to OFF, the WITNESS property should also be set to OFF (the default). Per informazioni sull'effetto del server di controllo del mirroring in modalità a prestazioni elevate, vedere Stato del server di controllo del mirroring, più avanti in questo argomento.For information about the impact of the witness in high-performance mode, see The State of the Witness, later in this topic. Per informazioni sull'esecuzione con la sicurezza delle transizioni disabilitata, vedere Mirroring asincrono del database (modalità a prestazioni elevate), più indietro in questo argomento.For more information about running with transaction safety turned off, see Asynchronous Database Mirroring (High-Performance Mode), earlier in this topic.

    L'impostazione della sicurezza delle transazioni per il database viene registrata per ogni partner nelle colonne mirroring_safety_level e mirroring_safety_level_desc della vista del catalogo sys.database_mirroring.The transaction safety setting of the database is recorded on each partner in the sys.database_mirroring catalog view in the mirroring_safety_level and mirroring_safety_level_desc columns. Per altre informazioni, vedere sys.database_mirroring (Transact-SQL).For more information, see sys.database_mirroring (Transact-SQL).

    Il proprietario del database può modificare il livello di sicurezza delle transazioni in qualsiasi momento.The database owner can change the transaction safety level at any time.

Stato del server di controllo del mirroring The State of the Witness

Se è stato impostato un server di controllo del mirroring, il quorum è necessario e pertanto lo stato di tale server è sempre significativo.If a witness has been set, quorum is required, so the state of the witness is always significant.

Se è disponibile, il server di controllo del mirroring dispone di due stati:If it exists, the witness has one of two states:

  • Quando è connesso a un partner, il server di controllo del mirroring si trova nello stato CONNECTED in relazione a tale partner e dispone del quorum con quest'ultimo.When the witness is connected to a partner, the witness is in the CONNECTED state relative to that partner and has quorum with that partner. In questo caso, è possibile rendere disponibile il database, anche se uno dei partner non è disponibile.In this case, the database can be made available, even if one of the partners is unavailable.

  • Quando è disponibile ma non è connesso a un partner, il server di controllo del mirroring si trova nello stato UNKNOWN o DISCONNECTED in relazione a tale partner.When the witness exists but is not connected to a partner, the witness is in the UNKOWN or DISCONNECTED state relative to that partner. In questo caso, il server di controllo del mirroring non dispone del quorum con tale partner e, se i partner non sono connessi tra loro, il database non sarà più disponibile.In this case, the witness lacks quorum with that partner, and if the partners are not connected to each other, the database becomes unavailable.

    Per informazioni sul quorum, vedere Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database (mirroring del database).For information about quorum, see Quorum: How a Witness Affects Database Availability (Database Mirroring).

    Lo stato di ogni server di controllo del mirroring in un'istanza del server viene registrato nelle colonne mirroring_witness_state e mirroring_witness_state_desc della vista del catalogo sys.database_mirroring.The state of each witness on a server instance is recorded in the sys.database_mirroring catalog view in the mirroring_witness_state and mirroring_witness_state_desc columns. Per altre informazioni, vedere sys.database_mirroring (Transact-SQL).For more information, see sys.database_mirroring (Transact-SQL).

    Nella tabella seguente sono riepilogati gli effetti dell'impostazione della protezione delle transazioni e dello stato del server di controllo del mirroring sulla modalità operativa di una sessione.The following table summarizes how the operating mode of a session depends upon its transaction safety setting and on state of the witness.

Modalità operativaOperating mode Livello di sicurezza delle transazioniTransaction safety Stato del server di controllo del mirroringWitness state
Modalità a prestazioni elevateHigh-performance mode OFFOFF NULL (nessun server di controllo del mirroring)NULL (no witness)
Modalità a sicurezza elevata senza failover automaticoHigh-safety mode without automatic failover FULLFULL NULL (nessun server di controllo del mirroring)NULL (no witness)
Modalità a sicurezza elevata con failover automaticoHigh-safety mode with automatic failover FULLFULL CONNECTEDCONNECTED

Se il server di controllo del mirroring viene disconnesso, è consigliabile impostare WITNESS OFF finché l'istanza del server di controllo del mirroring non diventa disponibile.If the witness becomes disconnected, we recommend that you set WITNESS OFF until the witness server instance becomes available.

Se un server di controllo del mirroring è presente in modalità a prestazioni elevate, non partecipa alla sessione.If a witness is present in high-performance mode, the witness does not participate in the session. Tuttavia, per rendere disponibile il database, è necessario che almeno due istanze del server rimangano connesse.However, to make the database available, at least two of the server instances must remain connected. È pertanto consigliabile mantenere la proprietà WITNESS impostata su OFF nelle sessioni in modalità a prestazioni elevate.Therefore, we recommend keeping the WITNESS property set to OFF in high-performance mode sessions. Per altre informazioni, vedere Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database (mirroring del database).For more information, see Quorum: How a Witness Affects Database Availability (Database Mirroring).

Visualizzazione dell'impostazione di sicurezza e dello stato del server di controllo del mirroring Viewing the Safety Setting and State of the Witness

Per visualizzare l'impostazione di sicurezza e lo stato del server di controllo del mirroring per un database, usare la vista del catalogo sys.database_mirroring .To view the safety setting and the state of the witness for a database, use the sys.database_mirroring catalog view. Le colonne rilevanti sono le seguenti:The relevant columns are as follows:

FattoreFactor ColonneColumns DescrizioneDescription
Livello di sicurezza delle transazioniTransaction safety mirroring_safety_level o mirroring_safety_level_descmirroring_safety_level or mirroring_safety_level_desc Impostazione del livello di protezione delle transazioni per gli aggiornamenti nel database mirror, scelta tra le seguenti:Transaction safety setting for updates on the mirror database, one of:

UNKNOWNUNKNOWN

OFFOFF

FULLFULL

NULL = database non onlineNULL= database is not online.
Disponibilità di un server di controllo del mirroringDoes a witness exist? mirroring_witness_namemirroring_witness_name Nome del server di controllo del mirroring del database o valore NULL se tale server non esiste.Server name of the database mirroring witness or NULL, indicating that no witness exists.
Stato del server di controllo del mirroringWitness state mirroring_witness_state o mirroring_witness_state_descmirroring_witness_state or mirroring_witness_state_desc Stato del server di controllo del mirroring nel database di un determinato partner:State of the witness in the database on a given partner:

UNKNOWNUNKNOWN

CONNECTEDCONNECTED

DISCONNECTEDDISCONNECTED

NULL = server di controllo del mirroring non disponibile o database non onlineNULL = no witness exists or the database is not online.

Nel server principale o nel server mirror, ad esempio, immettere:For example, on either the principal or mirror server, enter:

SELECT mirroring_safety_level_desc, mirroring_witness_name, mirroring_witness_state_desc FROM sys.database_mirroring  

Per altre informazioni su questa vista del catalogo, vedere sys.database_mirroring (Transact-SQL).For more information about this catalog view, see sys.database_mirroring (Transact-SQL).

Fattori che influiscono sul funzionamento della sessione in caso di perdita del server principale Factors Affecting Behavior on Loss of the Principal Server

Nella tabella seguente sono riepilogati gli effetti combinati dell'impostazione del livello di protezione delle transazioni, dello stato del database e dello stato del server di controllo del mirroring sul funzionamento di una sessione di mirroring in caso di perdita del server principale.The following table summarizes the combined effect of the transaction safety setting, the state of the database, and the state of the witness on the behavior of a mirroring session on the loss of the principal server.

Livello di sicurezza delle transazioniTransaction safety Stato di mirroring del database mirrorMirroring state of mirror database Stato del server di controllo del mirroringWitness state Funzionamento in caso di perdita del server principaleBehavior when principal is lost
FULLFULL SYNCHRONIZEDSYNCHRONIZED CONNECTEDCONNECTED Si verifica il failover automatico.Automatic failover occurs.
FULLFULL SYNCHRONIZEDSYNCHRONIZED DISCONNECTEDDISCONNECTED Il server mirror si arresta. Non è possibile eseguire il failover né rendere disponibile il database.Mirror server stops; failover is not possible, and the database cannot be made available.
OFFOFF SUSPENDED o DISCONNECTEDSUSPENDED or DISCONNECTED NULL (nessun server di controllo del mirroring)NULL (no witness) È possibile forzare il servizio nel server mirror ma potrebbe verificarsi perdita di dati.Service can be forced to the mirror server (with possible data loss).
FULLFULL SYNCHRONIZING o SUSPENDEDSYNCHRONIZING or SUSPENDED NULL (nessun server di controllo del mirroring)NULL (no witness) È possibile forzare il servizio nel server mirror ma potrebbe verificarsi perdita di dati.Service can be forced to the mirror server (with possible data loss).

Vedere ancheSee Also

Monitoraggio del mirroring del database (SQL Server) Monitoring Database Mirroring (SQL Server)
Server di controllo del mirroring del databaseDatabase Mirroring Witness