Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Attenzione
Questa funzionalità verrà rimossa in una versione futura di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Per la disponibilità elevata, usare invece gruppi di disponibilità AlwaysOn.
Importante
Il mirroring del database in SQL Server è una tecnologia distinta rispetto al mirroring del database di Microsoft Fabric. Il mirroring su Fabric offre prestazioni analitiche migliori, la possibilità di unificare il patrimonio di dati con OneLake in Fabric e di aprire l'accesso ai dati in formato Delta Parquet.
Con il mirroring in Microsoft Fabric, è possibile replicare continuamente il patrimonio di dati esistente direttamente in OneLake in Fabric, inclusi i dati di SQL Server 2016+, database SQL di Azure, Istanza gestita di SQL di Azure, Cosmos DB, Oracle, Snowflake e altro ancora.
Per configurare un server di controllo per un database, il proprietario del database assegna un'istanza di Motore di database al ruolo di server di controllo. L'istanza del server di controllo può essere eseguita sullo stesso computer dell'istanza del server principale o del server mirror, ma questo riduce in modo significativo la robustezza del failover automatico.
Si consiglia vivamente che il witness sia installato su un computer separato. Un determinato server può prendere parte a più sessioni di mirroring del database simultanee con lo stesso o diversi partner. Un dato server può essere partner in alcune sessioni e testimone in altre.
Il testimone è destinato esclusivamente alla modalità a sicurezza elevata con failover automatico. Prima di configurare un server di controllo del mirroring, si consiglia vivamente di verificare che la proprietà SAFETY sia attualmente impostata su FULL.
Importante
È consigliabile configurare il mirroring del database durante le fasce orarie di minore attività, in quanto la configurazione può influire sulle prestazioni.
Configurare un witness
Sull'istanza del server testimone, verificare che esista un endpoint per il mirroring del database. Indipendentemente dal numero di sessioni di mirroring da supportare, è necessario che l'istanza del server disponga di un unico endpoint di mirroring del database. Se si intende usare questa istanza del server esclusivamente come witness nelle sessioni di mirroring del database, assegnare all'endpoint il ruolo di witness (ROLE**=**WITNESS). Se si intende utilizzare questa istanza del server come partner in una o più altre sessioni di mirroring del database, assegnare il ruolo dell'endpoint a ALL.
Per eseguire un'istruzione SET WITNESS, la sessione di mirroring del database deve essere già avviata (tra i partner) e lo STATE dell'endpoint del witness deve essere impostato su STARTED.
Per verificare se l'istanza server di controllo dispone dell'endpoint del mirroring del database e per conoscerne il ruolo e lo stato, utilizzare nell'istanza la seguente istruzione Transact-SQL:
SELECT role_desc, state_desc FROM sys.database_mirroring_endpointsImportante
Se un endpoint di mirroring del database è presente e già in uso, è consigliabile utilizzarlo per ogni sessione sull'istanza del server. L'eliminazione di un endpoint in uso determina la chiusura di tutte le connessioni delle sessioni esistenti. Se per una sessione è stato impostato un server di controllo del mirroring, l'eliminazione dell'endpoint di mirroring del database può causare la perdita del quorum per il server principale di tale sessione; se ciò si verifica, il database viene portato offline e i relativi utenti vengono disconnessi. Per ulteriori informazioni, vedere Quorum: come un witness influisce sulla disponibilità del database (mirroring del database).
Se il server di controllo non dispone di un endpoint, vedere Creare un endpoint del mirroring del database per l'autenticazione Windows (Transact-SQL).
Se le istanze dei partner sono in esecuzione con account utente di dominio diversi, creare un account di accesso per i diversi account sul database master di ogni istanza. Per altre informazioni, vedere Concessione dell'accesso alla rete a un endpoint per il mirroring del database utilizzando l'autenticazione di Windows (SQL Server).
Connettersi al server principale ed eseguire la seguente istruzione:
ALTER DATABASE <database_name>SET WITNESS =<server_network_address>
dove <nome_database> è il nome del database da sottoporre a mirroring (questo nome è lo stesso per entrambi i partner), e <server_network_address> è l'indirizzo di rete del server dell'istanza del server testimone.
La sintassi per un indirizzo di rete del server presenta la seguente struttura:
TCP://<system-address>:<port>
dove <system-address> è una stringa che identifica in maniera univoca il computer di destinazione e <port> è il numero di porta usato dall'endpoint del mirroring dell'istanza del server partner. Per altre informazioni, vedere Specificare un indirizzo di rete del server - Mirroring del database.
Ad esempio, nell'istanza del server principale, l'istruzione seguente ALTER DATABASE imposta il testimone. Il nome del database è AdventureWorks, l'indirizzo del sistema è DBSERVER3, il nome del sistema witness, e la porta usata dall'endpoint di mirroring del database del witness è
7022:ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://DBSERVER3:7022'
Esempio
Nell'esempio seguente viene creato un server di controllo del mirroring dei dati. Sull'istanza del server di controllo (istanza predefinita in WITNESSHOST4):
Creare un endpoint per questa istanza del server esclusivamente per il ruolo WITNESS utilizzando la porta
7022.CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=WITNESS) GOCreare un account di accesso per l'account utente di dominio delle istanze partner, se diverso; ad esempio, si supponga che il server di controllo del mirroring sia in esecuzione come
SOMEDOMAIN\witnessuser, ma che i partner siano in esecuzione comeMYDOMAIN\dbousername. Creare un account di accesso per i partner, come segue:--Create a login for the partner server instances, --which are both running as MYDOMAIN\dbousername: USE master ; GO CREATE LOGIN [MYDOMAIN\dbousername] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account --of partners GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MYDOMAIN\dbousername]; GOIn ciascuna delle istanze del server partner, creare un login per l'istanza del server witness:
--Create a login for the witness server instance, --which is running as SOMEDOMAIN\witnessuser: USE master ; GO CREATE LOGIN [SOMEDOMAIN\witnessuser] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account --of partners GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SOMEDOMAIN\witnessuser]; GOSul server principale, impostare il witness del mirroring, che si trova su
WITNESSHOST4:ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://WITNESSHOST4:7022' GO
Nota
L'indirizzo di rete del server indica l'istanza del server di destinazione tramite il numero di porta, che corrisponde all'endpoint di mirroring dell'istanza.
Per un esempio completo che mostri la configurazione della sicurezza, la preparazione del database mirror, la configurazione dei partner e l'aggiunta di un testimone, vedere Impostazione del mirroring del database (SQL Server).
Vedi anche
ALTER DATABASE (Transact-SQL)
Concessione dell'accesso alla rete a un endpoint per il mirroring del database utilizzando l'autenticazione di Windows (SQL Server)
Creare un endpoint di mirroring del database per l'autenticazione Windows (Transact-SQL)
Stabilire una sessione di mirroring del database tramite autenticazione di Windows (Transact-SQL)
Rimuovere il witness da una sessione di mirroring del database (SQL Server)
Server di controllo del mirroring del database