Impostazioni di Transact-SQL e modalità operative del mirroring del database

In questo argomento viene descritto il funzionamento di una sessione di mirroring del database dal punto di vista delle impostazioni di ALTER DATABASE e degli stati del database con mirroring e del server di controllo del mirroring. Le informazioni di questo argomento sono rivolte agli utenti che gestiscono il mirroring del database utilizzando principalmente o esclusivamente Transact-SQL, anziché MicrosoftSQL Server Management Studio. Per informazioni sulle modalità operative, vedere Sessioni di mirroring del database.

[!NOTA]

In alternativa a Transact-SQL, è possibile controllare la modalità operativa di una sessione in Esplora oggetti mediante la pagina Mirroring della finestra di dialogo Proprietà database. Per ulteriori informazioni, vedere Procedura: Configurazione di una sessione di mirroring del database (SQL Server Management Studio).

Effetti della protezione delle transazioni e dello stato del server di controllo del mirroring sulla modalità operativa

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. In qualsiasi momento, il proprietario del database può modificare il livello di protezione delle transazioni e aggiungere o rimuovere il server di controllo del mirroring.

Livello di protezione delle transazioni

Il livello di protezione delle transazioni è una proprietà del database specifica del mirroring che determina l'esecuzione della sessione di mirroring del database in modalità sincrona o asincrona. Esistono due livelli di protezione: FULL e OFF.

  • SAFETY FULL

    Il livello di sicurezza delle transazioni completo determina l'esecuzione della sessione in modo sincrono in modalità a sicurezza elevata. Se è presente un server di controllo del mirroring, una sessione supporta il failover automatico.

    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. Dopo l'inizio della sessione, è possibile aggiungere un server di controllo del mirroring.

    Per ulteriori informazioni, vedere Mirroring sincrono del database (modalità a sicurezza elevata).

  • SAFETY OFF

    La disattivazione della protezione delle transazioni determina l'esecuzione della sessione in modalità asincrona a prestazioni elevate. Se la proprietà SAFETY è impostata su OFF, è necessario impostare sul valore predefinito OFF anche la proprietà WITNESS. Per informazioni sull'effetto del server di controllo del mirroring in modalità a prestazioni elevate, vedere la sezione "Stato del server di controllo del mirroring" di seguito in questo argomento. Per ulteriori informazioni sull'esecuzione quando la protezione delle transazioni è disattivata, vedere Mirroring asincrono del database (modalità a prestazioni elevate).

L'impostazione del livello di protezione 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. Per ulteriori informazioni, vedere sys.database_mirroring (Transact-SQL).

Il proprietario del database può modificare il livello di protezione delle transazioni in qualsiasi momento.

Stato del server di controllo del mirroring

Se è stato impostato un server di controllo del mirroring, il quorum è necessario e pertanto lo stato di tale server è sempre significativo.

Se è disponibile, il server di controllo del mirroring dispone di due stati:

  • 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. In questo caso, è possibile rendere disponibile il database, anche se uno dei partner non è disponibile.

  • 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. 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.

Per ulteriori informazioni sul quorum, vedere Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database.

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. Per ulteriori informazioni, vedere 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.

Modalità operativa

Livello di protezione delle transazioni

Stato del server di controllo del mirroring

Modalità a prestazioni elevate

OFF

NULL (nessun server di controllo del mirroring)2

Modalità a sicurezza elevata senza failover automatico

FULL

NULL (nessun server di controllo del mirroring)

Modalità a sicurezza elevata con failover automatico1

FULL

CONNECTED

1 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.

2 Se un server di controllo è presente in modalità a prestazioni elevate, non partecipa alla sessione. Tuttavia, per rendere disponibile il database, è necessario che almeno due istanze del server rimangano connesse. È pertanto consigliabile mantenere la proprietà WITNESS impostata su OFF nelle sessioni in modalità a prestazioni elevate. Per ulteriori informazioni, vedere Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database.

Visualizzazione dell'impostazione di protezione e dello stato del server di controllo del mirroring

Per visualizzare l'impostazione di protezione e lo stato del server di controllo del mirroring per un database, utilizzare la vista del catalogo sys.database_mirroring. Le colonne rilevanti sono le seguenti:

Fattore

Colonne

Descrizione

Livello di protezione delle transazioni

mirroring_safety_level o mirroring_safety_level_desc

Impostazione del livello di protezione delle transazioni per gli aggiornamenti nel database mirror, scelta tra le seguenti:

UNKNOWN

OFF

FULL

NULL = database non in linea

Disponibilità di un server di controllo del mirroring

mirroring_witness_name

Nome del server di controllo del mirroring del database o valore NULL se tale server non esiste.

Stato del server di controllo del mirroring

mirroring_witness_state o mirroring_witness_state_desc

Stato del server di controllo del mirroring nel database di un determinato partner:

UNKNOWN

CONNECTED

DISCONNECTED

NULL = server di controllo del mirroring non disponibile o database non in linea

Nel server principale o nel server mirror, ad esempio, immettere:

SELECT mirroring_safety_level_desc, mirroring_witness_name, mirroring_witness_state_desc FROM sys.database_mirroring

Per ulteriori informazioni su questa vista del catalogo, vedere sys.database_mirroring (Transact-SQL).

Fattori che influiscono sul funzionamento della sessione in caso di perdita del server principale

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.

Livello di protezione delle transazioni

Stato di mirroring del database mirror

Stato del server di controllo del mirroring

Funzionamento in caso di perdita del server principale

FULL

SYNCHRONIZED

CONNECTED

Si verifica il failover automatico.

FULL

SYNCHRONIZED

DISCONNECTED

Il server mirror si interrompe. Non è possibile eseguire il failover né rendere disponibile il database.

OFF

SUSPENDED o DISCONNECTED

NULL (nessun server di controllo del mirroring)

È possibile forzare il servizio nel server mirror ma può verificarsi la perdita dei dati.

FULL

SYNCHRONIZING o SUSPENDED

NULL (nessun server di controllo del mirroring)

È possibile forzare il servizio sul server mirror ma può verificarsi la perdita dei dati.