Aggiungere un server di controllo del mirroring del database tramite l'autenticazione di Windows (Transact-SQL)Add a Database Mirroring Witness Using Windows Authentication (Transact-SQL)

Per installare un server di controllo per un database, il proprietario del database assegna un'istanza di Motore di database al ruolo di server di controllo.To set up a witness for a database, the database owner assigns a Database Engine instance to the role of witness server. L'istanza del server di controllo può essere eseguita sullo stesso computer dell'istanza del server principale o mirror, ma questo riduce in modo significativo l'affidabilità del failover automatico.The witness server instance can run on the same computer as the principal or mirror server instance, but this substantially reduces the robustness of automatic failover.

È fortemente consigliabile che il server di controllo risieda su un computer separato.We strongly recommend that the witness reside on a separate computer. Un determinato server può prendere parte a più sessioni di mirroring del database simultanee con lo stesso o diversi partner.A given server can participate in multiple concurrent database mirroring sessions with the same or different partners. Un determinato server può essere partner in alcune sessioni e server di controllo in altre.A given server can be a partner in some sessions and a witness in other sessions.

Il server di controllo del mirroring è destinato unicamente alla modalità a sicurezza elevata con failover automatico.The witness is intended exclusively for high-safety mode with automatic failover. Prima di impostare un server di controllo del mirroring, è consigliabile verificare che la proprietà SAFETY sia impostata su FULL.Before you set a witness, we strongly recommend that you ensure that the SAFETY property is currently set to FULL.

Importante

È consigliabile configurare il mirroring del database durante le fasce orarie di minore attività, in quanto la configurazione può influire sulle prestazioni.We recommend that you configure database mirroring during off-peak hours because configuration can impact performance.

Per creare un server di controlloTo establish a witness

  1. Sull'istanza del server di controllo, assicurarsi che sia presente un endpoint per il mirroring del database.On the witness server instance, ensure that an endpoint exists for database mirroring. Indipendentemente dal numero di sessioni di mirroring da supportare, è necessario che l'istanza del server disponga di un unico endpoint di mirroring del database.Regardless of the number of mirroring session to be supported, the server instance must have only one database mirroring endpoint. Se si desidera usare l'istanza del server esclusivamente come server di controllo nelle sessioni di mirroring del database, assegnare il ruolo di server di controllo all'endpoint (ROLE=WITNESS).If you intend to use this server instance exclusively as a witness in database mirroring sessions, assign the role of witness to the endpoint (ROLE=WITNESS). Se si desidera utilizzare l'istanza del server come partner in una o più sessioni di mirroring del database, assegnare il ruolo di server dell'endpoint come ALL.If you intend to use this server instance as a partner in one or more other database mirroring sessions, assign the role of the endpoint as ALL.

    Per eseguire un'istruzione SET WITNESS, è necessario che la sessione di mirroring del database sia già iniziata (tra i partner) e che il valore STATE dell'endpoint del server di controllo sia impostato su STARTED.To execute a SET WITNESS statement, the database mirroring session must already be started (between the partners), and the STATE of the endpoint of the witness must be set to STARTED.

    Per informazioni sulle situazioni in cui l'istanza del server di controllo del mirroring dispone di un endpoint del mirroring del database e sul suo ruolo e stato, eseguire l'istruzione Transact-SQL seguente sull'istanza:To learn whether the witness server instance has its database mirroring endpoint and to learn its role and state, on that instance, use the following Transact-SQL statement:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints  
    

    Importante

    Se un endpoint di mirroring del database è presente e già in uso, è consigliabile utilizzarlo per ogni sessione sull'istanza del server.If a database mirroring endpoint exists and is already in use, we recommend that you use that endpoint for every session on the server instance. L'eliminazione di un endpoint in uso determina la chiusura di tutte le connessioni delle sessioni esistenti.Dropping an in-use endpoint disrupts the connections of the existing sessions. Se un server di controllo del mirroring è stato impostato per una sessione, l'eliminazione dell'endpoint del mirroring del database può determinare la perdita del quorum da parte del server principale della sessione. Se questo si verifica, il database viene portato offline e i suoi utenti vengono disconnessi.If a witness has been set for a session, dropping the database mirroring endpoint can cause the principal server of that session to lose quorum; if that occurs, the database is taken offline and its users are disconnected. 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).

    Se il server di controllo manca di un endpoint, vedere Creare un endpoint del mirroring del database per l'autenticazione Windows (Transact-SQL).If the witness lacks an endpoint, see Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL).

  2. 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.If the partner instances are running under different domain user accounts, create a login for the different accounts in the master database of each instance. Per altre informazioni, vedere Concessione dell'accesso alla rete a un endpoint per il mirroring del database utilizzando l'autenticazione di Windows (SQL Server).For more information, see Allow Network Access to a Database Mirroring Endpoint Using Windows Authentication (SQL Server).

  3. Connettersi al server principale ed eseguire la seguente istruzione:Connect to the principal server and issue the following statement:

    ALTER DATABASE <database_name> SET WITNESS =<server_network_address>ALTER DATABASE <database_name> SET WITNESS =<server_network_address>

    dove <database_name> è il nome del database di cui eseguire il mirroring (tale nome è lo stesso per entrambi i partner) e <server_network_address> è l'indirizzo di rete dell'istanza del server di controllo del mirroring.where <database_name> is the name of the database to be mirrored (this name is the same on both partners), and <server_network_address> is the server network address of the witness server instance.

    La sintassi per un indirizzo di rete del server presenta la seguente struttura:The syntax for a server network address is as follows:

    TCP://<indirizzo_sistema>:<porta>TCP://<system-address>:<port>

    dove <indirizzo-sistema> è una stringa che identifica in maniera univoca il computer di destinazione e <porta> è il numero di porta usato dall'endpoint del mirroring dell'istanza del server partner.where <system-address> is a string that unambiguously identifies the destination computer system, and <port> is the port number used by the mirroring endpoint of the partner server instance. Per altre informazioni, vedere Specificare un indirizzo di rete del server (Mirroring del database).For more information, see Specify a Server Network Address (Database Mirroring).

    Ad esempio, sull'istanza del server principale l'istruzione ALTER DATABASE seguente imposta il server di controllo del mirroring.For example, on the principal server instance, the following ALTER DATABASE statement sets the witness. Il nome del database è AdventureWorks, l'indirizzo del sistema è DBSERVER3, ovvero il nome del server di controllo del mirroring, e la porta utilizzata dall'endpoint del mirroring del database del server di controllo del mirroring è 7022:The database name is AdventureWorks, the system address is DBSERVER3—the name of the witness system, and the port used by the database mirroring endpoint of the witness is 7022:

    ALTER DATABASE AdventureWorks   
      SET WITNESS = 'TCP://DBSERVER3:7022'  
    

EsempioExample

Nell'esempio seguente viene creato un server di controllo del mirroring dei dati.The following example establishes a data mirroring witness. Sull'istanza del server di controllo (istanza predefinita in WITNESSHOST4):On the witness server instance (default instance on WITNESSHOST4):

  1. Creare un endpoint per questa istanza del server solo per il ruolo WITNESS utilizzando la porta 7022.Create an endpoint for this server instance for the WITNESS role only using port 7022.

    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=WITNESS)  
    GO  
    
  2. Creare un account di accesso per l'account utente di dominio delle istanze dei partner, se diverso. Ad esempio, supporre che il server di controllo del mirroring sia in esecuzione come SOMEDOMAIN\witnessuser, ma che i partner siano in esecuzione come MYDOMAIN\dbousername.Create a login for domain user account of partner instances, if different; for example, assume that the witness is running as SOMEDOMAIN\witnessuser, but the partners are running as MYDOMAIN\dbousername. Creare un account di accesso per i partner, come segue:Create a login for the partners, as follows:

    --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];  
    GO  
    
  3. Su ciascuna delle istanze del server partner creare un account di accesso per l'istanza del server di controllo:On each of the partner server instances, create a login for the witness server instance:

    --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];  
    GO  
    
  4. Sul server principale impostare il server di controllo del mirroring, che si trova in WITNESSHOST4:On the principal server, set the witness (which is on WITNESSHOST4):

    ALTER DATABASE AdventureWorks   
        SET WITNESS =   
        'TCP://WITNESSHOST4:7022'  
    GO  
    

Nota

L'indirizzo di rete del server indica l'istanza del server di destinazione attraverso il numero di porta, che esegue il mapping dell'endpoint di mirroring dell'istanza.The server network address indicates the target server instance by the port number, which maps to the mirroring endpoint of the instance.

Per un esempio completo che illustri le impostazioni relative alla sicurezza e ai partner, nonché l'aggiunta di un server di controllo del mirroring, vedere Impostazione del mirroring del database (SQL Server).For a complete example showing security setup, preparing the mirror database, setting up the partners, and adding a witness, see Setting Up Database Mirroring (SQL Server).

Vedere ancheSee Also

ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
Concessione dell'accesso alla rete a un endpoint per il mirroring del database utilizzando l'autenticazione di Windows (SQL Server) Allow Network Access to a Database Mirroring Endpoint Using Windows Authentication (SQL Server)
Creare un endpoint del mirroring del database per l'autenticazione Windows (Transact-SQL) Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL)
Stabilire una sessione di mirroring del database tramite autenticazione di Windows (Transact-SQL) Establish a Database Mirroring Session Using Windows Authentication (Transact-SQL)
Rimuovere il server di controllo del mirroring da una sessione di mirroring del database (SQL Server) Remove the Witness from a Database Mirroring Session (SQL Server)
Server di controllo del mirroring del databaseDatabase Mirroring Witness