Share via


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

Data aggiornamento: 17 novembre 2008

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 Microsoft SQL Server 2005.

  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 perché il database principale è disponibile nell'unità F: e tale unità non è presente nel database mirror, sarà necessario includere l'opzione MOVE nell'istruzione RESTORE.

    ms189047.note(it-it,SQL.90).gifImportante:
    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 si spostano i file di database durante la creazione del database mirror, una operazione di aggiunta di file successiva potrebbe avere esito negativo nel database mirror e determinare la sospensione del mirroring. Per ulteriori informazioni sulla gestione di un'operazione di creazione di file non riuscita, vedere Risoluzione dei problemi relativi all'impostazione 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 nel database principale, copiare tale backup nel 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, nel server mirror è possibile utilizzare SQL Server o Transact-SQL:

  8. Se sono stati eseguiti altri backup del log nel database principale dopo il backup del log richiesto, sarà 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.

ms189047.security(it-it,SQL.90).gifNota 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.
ms189047.note(it-it,SQL.90).gifImportante:
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 una periferica distinta.

    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.

      ms189047.note(it-it,SQL.90).gifImportante:
      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.

Vedere anche

Attività

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

Concetti

Preparazione di un database di mirror per il mirroring
Protezione del trasporto per il mirroring del database
Mirroring di database e cataloghi full-text
Panoramica del mirroring del database
Replica e mirroring del database

Altre risorse

BACKUP (Transact-SQL)
Argomenti dell'istruzione RESTORE (Transact-SQL)
RESTORE (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005