Share via


Procedura: Aggiunta di un server di controllo del mirroring del database tramite l'autenticazione di Windows (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. 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.

Nota importanteImportante

Si consiglia di configurare il mirroring del database durante le fasce orarie di minore attività, dato che la configurazione può influire sulle prestazioni.

Per 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 utilizzare 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
    
    Nota importanteImportante

    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 fuori linea e i suoi utenti vengono disconnessi. Per ulteriori informazioni, vedere Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database.

    Se per il server di controllo manca un endpoint, vedere Procedura: Creazione di un endpoint del mirroring 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 ulteriori informazioni, vedere Procedura: Concessione dell'accesso alla rete per il mirroring del database utilizzando l'autenticazione di Windows (Transact-SQL).

  3. Connettersi al server principale ed eseguire l'istruzione seguente:

    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.

    La sintassi per un indirizzo di rete del server presenta la struttura seguente:

    TCP**://<system-address>:**<port>

    dove <system-address> è una stringa che identifica in maniera univoca il computer di destinazione e <port> è il numero di porta utilizzato dall'endpoint del mirroring dell'istanza del server partner. Per ulteriori informazioni, vedere Impostazione di 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 utilizzata 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 per numero di porta, che esegue il mapping dell'endpoint di mirroring dell'istanza.

Per un esempio completo sulla configurazione della protezione, la preparazione del database mirror, la configurazione dei partner e l'aggiunta di un server di controllo del mirroring, vedere Impostazione del mirroring del database.