Procedura: Stabilire una sessione di mirroring del database tramite autenticazione di Windows (Transact-SQL)

Dopo la preparazione del database mirror, illustrata in Procedura: Preparazione di un database mirror per il mirroring (Transact-SQL), è possibile stabilire una sessione di mirroring del database. È necessario che le istanze del server principale, del server mirror e del server di controllo del mirroring siano istanze di server distinte, situate in sistemi host distinti.

Nota importanteImportante

È consigliabile configurare il mirroring del database durante le fasce orarie di minore attività, dato che tale configurazione può influire sulle prestazioni.

Nota

Una determinata istanza del server può prendere parte a più sessioni di mirroring del database simultanee con lo stesso partner o con partner diversi. Una determinata istanza del server può essere partner in alcune sessioni e server di controllo del mirroring in altre. L'istanza del server mirror deve essere in esecuzione nella stessa edizione di SQL Server, Standard o Enterprise, come l'istanza del server principale. È inoltre consigliabile che vengano eseguite in sistemi simili in grado di gestire carichi di lavoro identici.

Per stabilire una sessione di mirroring del database

  1. Creare il database mirror. Per ulteriori informazioni, vedere Procedura: Preparazione di un database mirror per il mirroring (Transact-SQL).

  2. Impostare la sicurezza in ogni istanza del server.

    Per ogni istanza del server in una sessione di mirroring del database è necessario un endpoint di mirroring del database. Se l'endpoint non esiste, è necessario crearlo.

    Nota

    La forma di autenticazione utilizzata per il mirroring del database da un'istanza del server corrisponde a una proprietà dell'endpoint del mirroring del database dell'istanza. Per il mirroring del database sono disponibili due tipi di sicurezza del trasporto: l'autenticazione di Windows o l'autenticazione basata sui certificati. Per ulteriori informazioni, vedere Protezione del trasporto per il mirroring del database.

    Assicurarsi che in ogni server partner server sia disponibile un endpoint per il mirroring del database. Indipendentemente dal numero di sessioni di mirroring da supportare, nell'istanza del server è consentito un solo endpoint del mirroring del database. Se si desidera utilizzare questa istanza del server esclusivamente per i partner di sessioni di mirroring del database, è possibile assegnare il ruolo di partner all'endpoint (ROLE**=**PARTNER). Se si desidera utilizzare questo server anche per il server di controllo del mirroring in altre sessioni di mirroring del database, assegnare il ruolo dell'endpoint come ALL.

    Per eseguire un'istruzione SET PARTNER, l'opzione STATE degli endpoint di entrambi i partner deve essere impostata su STARTED.

    Per verificare se un'istanza del server dispone di un endpoint del mirroring del database e per informazioni sul ruolo e sullo stato relativi, in quell'istanza, utilizzare l'istruzione Transact-SQL seguente:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints
    
    Nota importanteImportante

    Non riconfigurare un endpoint del mirroring del database in uso. 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 può determinare il riavvio dell'endpoint, interrompendo le connessioni delle sessioni esistenti, cosa che ad altre istanze del server potrebbe apparire come un errore. Questa indicazione è particolarmente importante in modalità a sicurezza elevata con failover automatico, nella quale la riconfigurazione dell'endpoint in un partner potrebbe causare il verificarsi di un failover. Se un server di controllo del mirroring è stato impostato per una sessione, l'eliminazione dell'endpoint del mirroring del database può inoltre determinare la perdita del quorum da parte del server principale della sessione. Se si verifica questa situazione, il database viene portato offline e i suoi utenti vengono disconnessi. Per ulteriori informazioni, vedere Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database.

    Se uno dei partner non dispone di un endpoint, vedere Procedura: Creazione di un endpoint del mirroring per l'autenticazione Windows (Transact-SQL).

  3. Se le istanze del server sono in esecuzione in account utente di dominio diversi, per ciascuna istanza è necessario un account di accesso nel database master delle altre. Se l'account di accesso non esiste, è necessario crearlo. Per ulteriori informazioni, vedere Procedura: Concessione dell'accesso alla rete per il mirroring del database utilizzando l'autenticazione di Windows (Transact-SQL).

  4. Per impostare il server principale come partner sul database mirror, connettersi al server mirror ed eseguire l'istruzione seguente:

    ALTER DATABASE <database_name> SET PARTNER =<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 del server del server principale.

    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 mirror, l'istruzione ALTER DATABASE seguente imposta il partner come istanza del server principale originale. Il nome del database è AdventureWorks2008R2, l'indirizzo del sistema è DBSERVER1, nome del sistema partner, e il numero della porta utilizzata dall'endpoint del mirroring del database del partner è 7022:

    ALTER DATABASE AdventureWorks2008R2 
       SET PARTNER = 'TCP://DBSERVER1:7022'
    

    Questa istruzione prepara il server mirror per creare una sessione quando viene contattato dal server principale.

  5. Per impostare il server mirror come partner sul database principale, connettersi al server principale ed eseguire l'istruzione seguente:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    Per ulteriori informazioni, vedere il passaggio 4.

    Ad esempio, sull'istanza del server principale, l'istruzione ALTER DATABASE seguente imposta il partner come istanza del server mirror originale. Il nome del database è AdventureWorks2008R2, l'indirizzo del sistema è DBSERVER1, nome del sistema partner, e il numero della porta utilizzata dall'endpoint del mirroring del database del partner è 7025:

    ALTER DATABASE AdventureWorks2008R2 SET PARTNER = 'TCP://DBSERVER2:7022'
    

    L'immissione di questa istruzione sul server principale avvia la sessione di mirroring del database.

  6. Per impostazione predefinita, una sessione è impostata su un livello di protezione delle transazioni completo (SAFETY è impostato su FULL), il che determina l'avvio della sessione in modalità sincrona a sicurezza elevata senza failover automatico. È possibile riconfigurare la sessione per l'esecuzione in modalità a sicurezza elevata con failover automatico o in modalità asincrona a prestazioni elevate, come riportato di seguito:

Esempio

Nota

Nell'esempio seguente viene creata una sessione di mirroring del database tra i partner per un database mirror esistente. Per informazioni sulla creazione di un database mirror, vedere Procedura: Preparazione di un database mirror per il mirroring (Transact-SQL).

Nell'esempio viene illustrata la procedura di base per la creazione di una sessione di mirroring del database senza un server di controllo del mirroring. I due partner sono le istanze del server predefinite sui due sistemi di computer (PARTNERHOST1 e PARTNERHOST5). Le due istanze dei partner vengono eseguite tramite lo stesso account utente di dominio di Windows (MYDOMAIN\dbousername).

Nota

Per un esempio completo sulla configurazione della sicurezza, 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.

  1. Nell'istanza del server principale (istanza predefinita in PARTNERHOST1) creare un endpoint che supporti tutti i ruoli utilizzando la porta 7022:

    --create an endpoint for this instance
    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=ALL)
    GO
    --Partners under same domain user; login already exists in master.
    

    Nota

    Per un esempio sulla modalità di impostazione di un account di accesso, vedere Procedura: Concessione dell'accesso alla rete per il mirroring del database utilizzando l'autenticazione di Windows (Transact-SQL).

  2. Nell'istanza del server mirror (istanza predefinita in PARTNERHOST5) creare un endpoint che supporti tutti i ruoli utilizzando la porta 7022:

    --create an endpoint for this instance
    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=ALL)
    GO
    --Partners under same domain user; login already exists in master.
    
  3. Nell'istanza del server principale (in PARTNERHOST1), eseguire il backup del database:

    BACKUP DATABASE AdventureWorks2008R2 
        TO DISK = 'C:\AdvWorks_dbmirror.bak' 
        WITH FORMAT
    GO
    
  4. Sull'istanza del server mirror (in PARTNERHOST5), eseguire il ripristino del database:

    RESTORE DATABASE AdventureWorks2008R2 
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak' 
        WITH NORECOVERY
    GO
    
  5. Dopo aver creato il backup completo del database, è necessario creare un backup del log sul database principale. Ad esempio, l'istruzione Transact-SQL seguente esegue il backup del log nello stesso file utilizzato dal backup del database precedente:

    BACKUP LOG AdventureWorks2008R2 
        TO DISK = 'C:\AdventureWorks2008R2.bak' 
    GO
    
  6. Prima di avviare il mirroring, è necessario applicare il backup del log richiesto ed eventuali backup del log successivi.

    Ad esempio, l'istruzione Transact-SQL seguente ripristina il primo log da C:\AdventureWorks2008R2.bak:

    RESTORE LOG AdventureWorks2008R2 
        FROM DISK = 'C:\ AdventureWorks2008R2.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. Nell'istanza del server mirror impostare l'istanza del server in PARTNERHOST1 come partner, rendendola il server principale iniziale:

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 
        'TCP://PARTNERHOST1:7022'
    GO
    
    Nota importanteImportante

    Per impostazione predefinita, una sessione di mirroring del database viene eseguita in modalità sincrona, che dipende da un livello di sicurezza delle transazioni completo (SAFETY impostato su FULL). Per fare in modo che una sessione venga eseguita in modalità asincrona a prestazioni elevate impostare SAFETY su OFF. Per ulteriori informazioni, vedere Sessioni di mirroring del database e Procedura: Modifica della protezione delle transazioni in una sessione di mirroring del database (Transact-SQL).

  8. Nell'istanza del server principale impostare l'istanza del server in PARTNERHOST5 come partner, rendendola l'istanza del server mirror iniziale:

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 'TCP://PARTNERHOST5:7022'
    GO
    
  9. Facoltativamente, se si desidera utilizzare la modalità a sicurezza elevata con failover automatico, impostare l'istanza del server di controllo del mirroring. Per ulteriori informazioni, vedere Procedura: Aggiunta di un server di controllo del mirroring del database tramite l'autenticazione di Windows (Transact-SQL).

Nota

Per un esempio completo sulla configurazione della sicurezza, 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.