Share via


Ripristino di un database in una nuova posizione (SQL Server)

In questo argomento viene descritto come ripristinare un database di SQL Server in un nuovo percorso e facoltativamente rinominare il database, in SQL Server 2012 tramite SQL Server Management Studio o Transact-SQL. È possibile spostare un database in un nuovo percorso di directory o crearne una copia nella stessa istanza server o in una diversa.

Contenuto dell'argomento

  • Prima di iniziare:

    Limitazioni e restrizioni

    Prerequisiti

    Consigli

    Sicurezza

  • Per ripristinare un database in un nuovo percorso e facoltativamente rinominare il database utilizzando:

    SQL Server Management Studio

    Transact-SQL

  • Attività correlate

Prima di iniziare

Limitazioni e restrizioni

  • L'amministratore di sistema che esegue il ripristino di un backup completo del database deve essere l'unico utente collegato al database.

Prerequisiti

  • Nel modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk, prima di poter ripristinare un database, è necessario eseguire il backup del log delle transazioni attivo. Per ulteriori informazioni, vedere Backup di un log delle transazioni (SQL Server).

Consigli

  • Per ripristinare un database crittografato, è necessario poter accedere alla chiave asimmetrica o al certificato utilizzato per crittografare il database. Non è possibile effettuare l'operazione di ripristino del database senza almeno uno di questi due elementi. Di conseguenza, il certificato utilizzato per crittografare la chiave di crittografia del database deve essere conservato fino a quando il backup è necessario. Per ulteriori informazioni, vedere Certificati SQL Server e chiavi simmetriche.

  • Per ulteriori considerazioni sullo spostamento di un database, vedere Copiare database tramite backup e ripristino.

  • Se si ripristina un database di SQL Server 2005 o SQL Server 2008 in SQL Server 2012, il database viene aggiornato automaticamente. In genere, il database diventa subito disponibile. Tuttavia, se in un database di SQL Server 2005 sono inclusi indici full-text, questi vengono importati, reimpostati o ricompilati dal processo di aggiornamento, a seconda dell'impostazione della proprietà del server upgrade_option. Se l'opzione di aggiornamento è impostata sull'importazione (upgrade_option = 2) o sulla ricompilazione (upgrade_option = 0), gli indici full-text non saranno disponibili durante l'aggiornamento. A seconda della quantità di dati indicizzati, l'importazione può richiedere diverse ore, mentre la ricompilazione può risultare dieci volte più lunga. Si noti inoltre che quando l'opzione di aggiornamento è impostata sull'importazione, gli indici full-text associati vengono ricompilati se non è disponibile un catalogo full-text. Per modificare l'impostazione della proprietà del server upgrade_option, utilizzare sp_fulltext_service.

Sicurezza

Per motivi di sicurezza, è consigliabile non collegare o ripristinare database da origini sconosciute o non attendibili. Tali database possono contenere codice dannoso che potrebbe eseguire codice Transact-SQL indesiderato o causare errori modificando lo schema o la struttura fisica di database. Prima di utilizzare un database proveniente da un'origine sconosciuta o non attendibile, eseguire DBCC CHECKDB nel database in un server non di produzione e quindi esaminare il codice del database, ad esempio le stored procedure o altro codice definito dall'utente.

Autorizzazioni

Se il database da ripristinare non esiste, per eseguire un'operazione RESTORE l'utente deve disporre delle autorizzazioni CREATE DATABASE. Se il database esiste, le autorizzazioni per l'istruzione RESTORE vengono assegnate per impostazione predefinita ai membri dei ruoli predefiniti del server sysadmin e dbcreator e al proprietario (dbo) del database.

Le autorizzazioni per l'istruzione RESTORE vengono assegnate ai ruoli in cui le informazioni sull'appartenenza sono sempre disponibili per il server. Poiché è possibile controllare l'appartenenza ai ruoli predefiniti del database solo quando il database è accessibile e non è danneggiato, condizioni che non risultano sempre vere quando si esegue un'operazione RESTORE, i membri del ruolo predefinito del database db_owner non dispongono delle autorizzazioni per l'istruzione RESTORE.

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Utilizzo di SQL Server Management Studio

Per ripristinare un database in un nuovo percorso e facoltativamente rinominare il database

  1. Connettersi all'istanza appropriata di Motore di database di SQL Server e quindi fare clic sul nome del server in Esplora oggetti per espandere l'albero del server.

  2. Fare clic con il pulsante destro del mouse su Database, quindi scegliere Ripristina database. Verrà visualizzata la finestra di dialogo Ripristina database.

  3. Per specificare l'origine e il percorso dei set di backup da ripristinare, nella pagina Generale, utilizzare la sezione Origine. Selezionare una delle opzioni seguenti:

    • Database

      Selezionare il database da ripristinare dall'elenco a discesa. Nell'elenco sono inclusi solo i database di cui è stato eseguito il backup in base alla cronologia dei backup di msdb.

    [!NOTA]

    Se il backup viene eseguito da un server diverso, il server di destinazione non disporrà delle informazioni della cronologia di backup per il database specificato. In questo caso, selezionare Dispositivo per specificare manualmente il file o il dispositivo da ripristinare.

    1. Dispositivo

      Fare clic sul pulsante Sfoglia (...) per aprire la finestra di dialogo Seleziona dispositivi di backup. Nella casella Tipi di supporti di backup selezionare uno dei tipi di dispositivi elencati. Per selezionare uno o più dispositivi per la casella Supporti di backup, fare clic su Aggiungi.

      Dopo aver aggiunto i dispositivi desiderati nella casella di riepilogo Dispositivi di backup, fare clic su OK per tornare alla pagina Generale.

      Nella casella di riepilogo Origine: Dispositivo: Database selezionare il nome del database da ripristinare.

      Nota  Questo elenco è disponibile solo se si seleziona Dispositivo. Saranno disponibili solo i database che dispongono di backup sul dispositivo selezionato.

  4. Nella sezione Destinazione, la casella Database viene popolata automaticamente con il nome del database da ripristinare. Per modificare il nome del database, immettere il nome nuovo nella casella Database.

  5. Nella casella Ripristina fino a mantenere l'impostazione predefinita Ultimo backup eseguito oppure fare clic su Cronologia per accedere alla finestra di dialogo Cronologia di backup e selezionare manualmente un momento specifico per arrestare l'azione di recupero. Per ulteriori informazioni sulla designazione di un momento specifico, vedere Sequenza temporale backup.

  6. Nella griglia Selezionare i set di backup da ripristinare selezionare i set di backup che si desidera ripristinare. In questa griglia vengono visualizzati i backup disponibili per il percorso specificato. Per impostazione predefinita, viene suggerito un piano di recupero. Per ignorare il piano di recupero suggerito, è possibile modificare le impostazioni selezionate nella griglia. I backup che dipendono dal ripristino di un backup precedente vengono automaticamente deselezionati quando il backup precedente è deselezionato.

    Per informazioni sulle colonne della griglia Selezionare i set di backup da ripristinare, vedere Ripristina database (pagina Generale).

  7. Per specificare il nuovo percorso dei file di database, selezionare la pagina File, quindi fare clic su Riloca tutti i file nella cartella. Fornire un nuovo percorso per Cartella file di dati e Cartella file di log. Per ulteriori informazioni su questa griglia, vedere Ripristina database (pagina File).

  8. Se lo si desidera, regolare le opzioni nella pagina Opzioni. Per ulteriori informazioni su queste opzioni, vedere Ripristina database (pagina Opzioni).

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Utilizzo di Transact-SQL

Per ripristinare un database in un nuovo percorso e facoltativamente rinominare il database

  1. Facoltativamente, determinare i nomi logici e fisici dei file del set di backup che contiene il backup di database completo da ripristinare. Questa istruzione restituisce un elenco dei file di database e di log contenuti nel set di backup. La sintassi di base è la seguente:

    RESTORE FILELISTONLY FROM <backup_device> WITH FILE = backup_set_file_number

    dove con backup_set_file_number viene indicata la posizione del backup nel set di supporti. È possibile ottenere la posizione di un set di backup utilizzando l'istruzione RESTORE HEADERONLY. Per ulteriori informazioni, vedere "Specifica di un set di backup" in Argomenti dell'istruzione RESTORE (Transact-SQL).

    Questa istruzione supporta inoltre alcune opzioni WITH. Per ulteriori informazioni, vedere RESTORE FILELISTONLY (Transact-SQL).

  2. Eseguire l'istruzione RESTORE DATABASE per ripristinare il backup di database completo. Per impostazione predefinita, i file di dati e di log vengono ripristinati nei percorsi originali. Per modificare il percorso di un database, utilizzare l'opzione MOVE per spostare ogni file di database e per evitare conflitti con i file esistenti.

    La sintassi Transact-SQL di base per il ripristino del database in un nuovo percorso e con un nuovo nome è la seguente:

    RESTORE DATABASE new_database_name

    FROM backup_device [ ,...n ]

    [ WITH

       {

            [ RECOVERY | NORECOVERY ]

       [ , ] [ FILE ={ backup_set_file_number | @backup\_set\_file\_number } ]

       [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]

       }

    ;

    [!NOTA]

    Quando si prepara lo spostamento di un database in un disco diverso, è necessario verificare che lo spazio disponibile sia sufficiente e identificare potenziali conflitti con i file esistenti. A tale scopo, utilizzare un'istruzione RESTORE VERIFYONLY che specifica gli stessi parametri MOVE che si intende utilizzare nell'istruzione RESTORE DATABASE.

    Nella tabella seguente vengono descritti argomenti di questa istruzione RESTORE ai fini del ripristino di un database in un nuovo percorso. Per ulteriori informazioni su questi argomenti, vedere RESTORE (Transact-SQL).

    • new_database_name
      Nuovo nome del database.

      [!NOTA]

      Se il database viene ripristinato in una diversa istanza del server, è possibile utilizzare il nome di database originale anziché uno nuovo.

    • backup_device [ ,...n ]
      Specifica un elenco di dispositivi di backup, da 1 a 64, delimitati da virgole da cui deve essere ripristinato il backup del database. È possibile specificare un dispositivo di backup fisico oppure un dispositivo di backup logico corrispondente, se già definito. Per specificare un dispositivo di backup fisico, utilizzare l'opzione DISK o TAPE:

      { DISK | TAPE } = physical_backup_device_name

      Per ulteriori informazioni, vedere Dispositivi di backup (SQL Server).

    • { RECOVERY | NORECOVERY }
      Se per il database si utilizza il modello di recupero con registrazione completa, può essere necessario applicare i backup del log delle transazioni dopo il ripristino del database. In questo caso, specificare l'opzione NORECOVERY.

      In caso contrario, utilizzare l'opzione RECOVERY (impostazione predefinita).

    • FILE = { backup_set_file_number | @backup\_set\_file\_number }
      Identifica il set di backup da ripristinare. Il valore 1 per backup_set_file_number, ad esempio, indica il primo set di backup nel supporto di backup, mentre il valore 2 per backup_set_file_number indica il secondo set di backup. È possibile ottenere il valore di backup_set_file_number di un set di backup utilizzando l'istruzione RESTORE HEADERONLY.

      Se questa opzione non è specificata, per impostazione predefinita viene utilizzato il primo set di backup disponibili sul dispositivo di backup.

      Per ulteriori informazioni, vedere "Specifica di un set di backup" nell'argomento Argomenti dell'istruzione RESTORE (Transact-SQL).

    • MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
      Specifica che il file di dati o di log specificato da logical_file_name_in_backup deve essere ripristinato nel percorso specificato da operating_system_file_name. Specificare un'istruzione MOVE per ogni file logico che si desidera ripristinare dal set di backup in un nuovo percorso.

      Opzione

      Descrizione

      logical_file_name_in_backup

      Specifica il nome logico di un file di dati o di log da includere nel set di backup. Il nome di file logico di un file di dati o di log in un set di backup corrisponde al relativo nome logico nel database al momento della creazione del set di backup.

      [!NOTA]

      Per ottenere un elenco dei file logici del set di backup, utilizzare RESTORE FILELISTONLY.

      operating_system_file_name

      Specifica un nuovo percorso per il file indicato da logical_file_name_in_backup. Il file verrà ripristinato a questo percorso.

      Se lo si desidera, attraverso operating_system_file_name è possibile specificare un nuovo nome per il file ripristinato. Questo passaggio è necessario se si crea una copia di un database esistente nella stessa istanza del server.

      n

      Segnaposto tramite cui viene indicata la possibilità di specificare istruzioni MOVE aggiuntive.

Esempio (Transact-SQL)

In questo esempio viene creato un nuovo database denominato MyAdvWorks ripristinando un backup del database di esempio AdventureWorks2012 in cui sono inclusi due file: AdventureWorks2012 _Data e AdventureWorks2012 _Log. In questo database viene utilizzato il modello di recupero con registrazione minima. Il database AdventureWorks2012 è già presente nell'istanza del server, pertanto i file del backup devono essere ripristinati in un nuovo percorso. L'istruzione RESTORE FILELISTONLY viene utilizzata per stabilire il numero e i nomi dei file del database da ripristinare. Il backup del database corrisponde al primo set disponibile sul dispositivo.

[!NOTA]

Gli esempi di backup e di ripristino del log delle transazioni, inclusi i ripristini temporizzati, utilizzano il database MyAdvWorks_FullRM creato da AdventureWorks2012 esattamente come nell'esempio seguente basato su MyAdvWorks. Tuttavia, è necessario modificare il database MyAdvWorks_FullRM risultante per utilizzare il modello di recupero con registrazione completa tramite la seguente istruzione Transact-SQL: ALTER DATABASE <nome_database> SET RECOVERY FULL.

USE master;
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks2012_Backup is the name of the backup device.
RESTORE FILELISTONLY
   FROM AdventureWorks2012_Backup;
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
   FROM AdventureWorks2012_Backup
   WITH RECOVERY,
   MOVE 'AdventureWorks2012_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf', 
   MOVE 'AdventureWorks2012_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';
GO

Per un esempio relativo alla creazione di un backup completo del database AdventureWorks2012 , vedere Creazione di un backup completo del database (SQL Server).

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Attività correlate

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Vedere anche

Riferimento

RESTORE (Transact-SQL)

Concetti

Gestione dei metadati quando si rende disponibile un database in un'altra istanza del server (SQL Server)

Copiare database tramite backup e ripristino