Procedura: Preparazione di un database mirror per il mirroring (Transact-SQL)

Il database mirror deve esistere prima dell'inizio di una sessione di mirroring del database. Il nome del database mirror deve essere identico a quello del database principale. Il proprietario del database o l'amministratore del sistema può creare il database mirror da un backup completo recente del database principale e da almeno un backup del log successivo. Per poter eseguire correttamente il mirroring, è necessario che lo stato del database mirror sia RESTORING. Quando si ripristina un backup in un database mirror, è pertanto necessario utilizzare sempre l'opzione WITH NORECOVERY per tutte le operazioni di ripristino.

Se il mirroring è stato rimosso e lo stato del database mirror è ancora RECOVERING, è possibile riavviare il mirroring. È tuttavia necessario prima eseguire almeno un backup del log sul database principale. Eseguire quindi sul database mirror un ripristino con l'opzione WITH NORECOVERY di tutti i backup del log eseguiti sul database principale dopo la rimozione del mirroring.

[!NOTA]

Non è possibile eseguire il mirroring del database di sistema master, msdb, temp o model.

Procedura

Per creare un database per il mirroring del database

  1. Verificare che in entrambe le istanze del server principale e del server mirror sia installato MicrosoftSQL Server 2008.

  2. Verificare che per il database venga utilizzato il modello di recupero con registrazione completa.

    Per ulteriori informazioni, vedere Procedura: Visualizzazione o modifica del modello di recupero di un database (SQL Server Management Studio) o sys.databases (Transact-SQL) e ALTER DATABASE (Transact-SQL).

  3. Eseguire un backup completo del database principale.

    Per ulteriori informazioni, vedere Procedura: Esecuzione del backup di un database (SQL Server Management Studio) o Procedura: Creazione di un backup completo del database (Transact-SQL).

    [!NOTA]

    In alternativa, è possibile ripristinare un backup completo esistente del database e, facoltativamente, un backup differenziale del database seguito da tutti i backup del log successivi.

  4. Verificare che nel sistema in cui si desidera creare il database mirror sia presente un'unità disco con spazio sufficiente per contenere il database.

  5. Se il backup non è posizionato in un'unità di rete accessibile da entrambi i sistemi, copiare il backup del database in tale sistema.

  6. Per creare il database mirror, ripristinare il backup completo del database nell'istanza del server mirror. L'istruzione RESTORE DATABASE database_name, dove database_name rappresenta il nome del database da sottoporre a mirroring, deve specificare l'opzione WITH NORECOVERY.

    [!NOTA]

    Se si ripristina il database un filegroup alla volta, prestare attenzione a ripristinare l'intero database.

    Se possibile, è inoltre consigliabile che il percorso del database mirror, inclusa la lettera di unità, sia identico a quello del database principale.

    Se i layout dei file sono diversi, ad esempio il database principale è disponibile nell'unità F: e tale unità non è presente nel database mirror, è necessario includere l'opzione MOVE nell'istruzione RESTORE.

    Nota importanteImportante

    Per aggiungere un file durante una sessione di mirroring senza conseguenze per la sessione, è necessario che il percorso del file esista in entrambi i server. Pertanto, se durante la creazione del database mirror i file del database vengono spostati, potrebbe essere impossibile aggiungere successivamente file al database mirror senza sospendere il mirroring. Per informazioni sulla gestione di un'operazione di creazione file non riuscita, vedere Risoluzione dei problemi relativi alla distribuzione del mirroring del database.

    Per ulteriori informazioni, vedere RESTORE (Transact-SQL) e Argomenti dell'istruzione RESTORE (Transact-SQL).

  7. In genere, è necessario eseguire almeno un backup del log sul database principale, copiare tale backup sul server mirror e ripristinarlo nel database mirror con l'opzione WITH NORECOVERY. È tuttavia possibile evitare il backup del log se il database è stato appena creato e non è ancora stato eseguito alcun backup del log oppure se il modello di recupero è stato appena modificato da SIMPLE a FULL.

    Per applicare il backup del log al database mirror, sul server mirror è possibile utilizzare SQL Server o Transact-SQL:

  8. Se sono stati eseguiti altri backup del log sul database principale dopo il backup del log richiesto, è inoltre necessario copiarli nel server mirror e applicare ognuno di questi backup del log al database mirror, a partire dal meno recente e utilizzando sempre l'opzione WITH NORECOVERY.

Nota sulla protezioneNota sulla protezione

La proprietà TRUSTWORTHY è impostata su OFF quando viene eseguito il backup di un database. Di conseguenza, la proprietà TRUSTWORTHY è sempre impostata su OFF in un nuovo database mirror. Se il database deve risultare attendibile dopo un failover, è necessario eseguire passaggi di configurazione aggiuntivi. Per ulteriori informazioni, vedere Procedura: Impostazione di un database mirror per l'utilizzo della proprietà Trustworthy.

Nota importanteImportante

Se il mirroring di database è stato interrotto, prima di poter riavviare il mirroring è necessario che tutti i backup di log successivi eseguiti sul database vengano applicati al database.

Esempio

Prima di iniziare una sessione di mirroring del database, è necessario creare il database mirror. Questa operazione deve essere eseguita poco prima di iniziare la sessione di mirroring.

Nell'esempio viene utilizzato il database di esempio AdventureWorks in cui, per impostazione predefinita, viene utilizzato il modello di recupero con registrazione minima.

  1. Per utilizzare il mirroring con il database AdventureWorks, è necessario modificare il database in modo da utilizzare il modello di recupero con registrazione completa:

    USE master;
    GO
    ALTER DATABASE AdventureWorks 
    SET RECOVERY FULL;
    GO
    
  2. Dopo aver modificato il modello di recupero del database da SIMPLE a FULL, creare un backup completo da utilizzare per la creazione del database mirror. Dopo la modifica del modello di recupero, è consigliabile selezionare l'opzione WITH FORMAT per creare un nuovo set di supporti. Tale operazione risulta utile per separare i backup eseguiti durante l'utilizzo del modello di recupero con registrazione completa dai backup precedenti eseguiti durante l'utilizzo del modello di recupero con registrazione semplice. Ai fini di questo esempio, il file di backup (C:\AdventureWorks.bak) verrà creato nella stessa unità del database.

    [!NOTA]

    Nel caso di un database di produzione, è consigliabile eseguire sempre il backup in un dispositivo distinto.

    Nell'istanza del server principale, ovvero in PARTNERHOST1, creare un backup completo del database principale nel modo seguente:

    BACKUP DATABASE AdventureWorks 
        TO DISK = 'C:\AdventureWorks.bak' 
        WITH FORMAT
    GO
    
  3. Copiare il backup completo nel server mirror.

  4. Ripristinare il backup completo nell'istanza del server mirror specificando WITH NORECOVERY. Il comando di ripristino dipende dal fatto che i percorsi del database mirror e di quello principale siano identici o meno.

    • Se i percorsi sono identici:

      Nell'istanza del server mirror, ovvero in PARTNERHOST5, ripristinare il backup completo nel modo seguente:

      RESTORE DATABASE AdventureWorks 
          FROM DISK = 'C:\AdventureWorks.bak' 
          WITH NORECOVERY
      GO
      
    • Se i percorsi sono diversi:

      Se il percorso del database mirror è diverso dal percorso del database principale, ad esempio perché le lettere di unità non corrispondono, per creare il database mirror è necessario che l'operazione di ripristino includa una clausola MOVE.

      Nota importanteImportante

      Se il nome di percorso del database principale è diverso dal nome di percorso del database mirror, non è possibile aggiungere un file. Alla ricezione del log relativo all'operazione di aggiunta del file, l'istanza del server mirror tenta infatti di salvare il nuovo file nella posizione utilizzata dal database principale.

      Ad esempio, il comando seguente ripristina un backup di un database principale che si trova in C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\ in una posizione diversa, ovvero D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\, in cui deve risiedere il database mirror.

      RESTORE DATABASE AdventureWorks
         FROM DISK='C:\AdventureWorks.bak'
         WITH NORECOVERY, 
            MOVE 'AdventureWorks_Data' TO 
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf', 
            MOVE 'AdventureWorks_Log' TO
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf';
      GO
      
  5. Dopo aver creato il backup completo, è necessario creare un backup del log nel database principale. Ad esempio, l'istruzione Transact-SQL seguente esegue il backup del log nello stesso file utilizzato dal precedente backup completo:

    BACKUP LOG AdventureWorks 
        TO DISK = 'C:\AdventureWorks.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:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. Se vengono eseguiti altri backup del log prima dell'avvio del mirroring, è necessario ripristinare anche tali backup, in sequenza, nel server mirror tramite WITH NORECOVERY.

    Ad esempio, l'istruzione Transact-SQL seguente ripristina due log aggiuntivi da C:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=2, NORECOVERY
    GO
    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=3, NORECOVERY
    GO
    

Per un esempio completo di impostazione del mirroring del database che illustri le impostazioni relative alla protezione e ai partner, nonché l'aggiunta di un server di controllo del mirroring, vedere Impostazione del mirroring del database.