Aggiungere un server di controllo del mirroring del database tramite l'autenticazione di Windows (Transact-SQL)

Si applica a:SQL Server

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

È fortemente consigliabile che il server di controllo risieda 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 determinato server può essere partner in alcune sessioni e server di controllo in altre.

Il server di controllo del mirroring è destinato unicamente alla modalità a sicurezza elevata con failover automatico. Prima di impostare un server di controllo del mirroring, è consigliabile verificare che la proprietà SAFETY sia 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.

Creare un server di controllo

  1. Sull'istanza del server di controllo, assicurarsi che sia presente 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 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). 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.

    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.

    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:

    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. L'eliminazione di un endpoint in uso determina la chiusura di tutte le connessioni delle sessioni esistenti. 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. Per altre informazioni, vedere Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database (mirroring del database).

    Se il server di controllo manca di un endpoint, vedere Creare un endpoint del mirroring del database per l'autenticazione Windows (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. Per altre informazioni, vedere Concessione dell'accesso alla rete a un endpoint per il mirroring del database utilizzando l'autenticazione di Windows (SQL Server).

  3. Connettersi al server principale ed eseguire la seguente istruzione:

    ALTER DATABASE <nome_database> SET WITNESS =<indirizzo_rete_server>

    dove <nome_database> è il nome del database di cui eseguire il mirroring (tale nome è lo stesso per entrambi i partner) e <> è l'indirizzo di rete dell'istanza del server di controllo del mirroring.

    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, sull'istanza del server principale l'istruzione ALTER DATABASE seguente imposta il server di controllo del mirroring. Il nome del database è AdventureWorks, l'indirizzo del sistema è DBSERVER3, ovvero il nome del server di controllo del mirroring, e la porta usata dall'endpoint del mirroring del database del server di controllo del mirroring è 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):

  1. Creare un endpoint per questa istanza del server solo per il ruolo WITNESS utilizzando la porta 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. 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];  
    GO  
    
  3. Su ciascuna delle istanze del server partner creare un account di accesso per l'istanza del server di controllo:

    --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:

    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.

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

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 del mirroring del database per l'autenticazione Windows (Transact-SQL)
Stabilire una sessione di mirroring del database tramite autenticazione di Windows (Transact-SQL)
Rimuovere il server di controllo del mirroring da una sessione di mirroring del database (SQL Server)
Server di controllo del mirroring del database