Ripristino di un database in una nuova posizione (SQL Server)Restore a Database to a New Location (SQL Server)

Questo argomento illustra come ripristinare un database di SQL ServerSQL Server in un nuovo percorso e facoltativamente rinominare il database, in SQL Server 2017SQL Server 2017 usando SQL Server Management Studio (SSMS) o Transact-SQLTransact-SQL.This topic describes how to restore a SQL ServerSQL Server database to a new location, and optionally rename the database, in SQL Server 2017SQL Server 2017 by using SQL Server Management Studio(SSMS) or Transact-SQLTransact-SQL. È possibile spostare un database in un nuovo percorso di directory o crearne una copia nella stessa istanza server o in una diversa.You can move a database to a new directory path or create a copy of a database on either the same server instance or a different server instance.

Prima di iniziare Before you begin!

Limitazioni e restrizioni Limitations and restrictions

  • L'amministratore di sistema che esegue il ripristino di un backup completo del database deve essere l'unico utente collegato al database.The system administrator restoring a full database backup must be the only person currently using the database to be restored.

Prerequisiti Prerequisites

  • 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.Under the full or bulk-logged recovery model, before you can restore a database, you must back up the active transaction log. Per altre informazioni, vedere Backup di un log delle transazioni (SQL Server).For more information, see Back Up a Transaction Log (SQL Server).

  • Per ripristinare un database crittografato, è necessario poter accedere al certificato o alla chiave asimmetrica usata per crittografare il database.To restore an encrypted database, you must have access to the certificate or asymmetric key used to encrypt the database! Non è possibile effettuare l'operazione di ripristino del database senza almeno uno di questi due elementi.Without that certificate or asymmetric key, you cannot retore the database. Il certificato usato per crittografare la chiave di crittografia del database deve essere mantenuto finché è necessario il backup.You must retain that certificate used to encrypt the database encryption key for as long as you need the backup! Per altre informazioni, vedere SQL Server Certificates and Asymmetric Keys.For more information, see SQL Server Certificates and Asymmetric Keys.

Indicazioni Recommendations

  • Per altre considerazioni sullo spostamento di un database, vedere Copiare database tramite backup e ripristino.For additional considerations for moving a database, see Copy Databases with Backup and Restore.

  • Se si ripristina un database di SQL Server 2005SQL Server 2005 o versione successiva in SQL Server 2017SQL Server 2017, il database viene aggiornato automaticamente.If you restore a SQL Server 2005SQL Server 2005 or higher database to SQL Server 2017SQL Server 2017, the database is automatically upgraded. In genere, il database diventa subito disponibile.Typically, the database becomes available immediately. Se tuttavia un database di SQL Server 2005SQL Server 2005 include indici full-text, questi vengono importati, reimpostati o ricompilati dal processo di aggiornamento, a seconda dell'impostazione della proprietà del server upgrade_option .However, if a SQL Server 2005SQL Server 2005 database has full-text indexes, the upgrade process either imports, resets, or rebuilds them, depending on the setting of the upgrade_option server property. Se l'opzione di aggiornamento è impostata per l'importazione (upgrade_option = 2) o la ricompilazione (upgrade_option = 0), gli indici full-text non saranno disponibili durante l'aggiornamento.If the upgrade option is set to import (upgrade_option = 2) or rebuild (upgrade_option = 0), the full-text indexes will be unavailable during the upgrade. A seconda della quantità di dati indicizzati, l'importazione può richiedere diverse ore, mentre la ricompilazione può risultare dieci volte più lunga.Depending the amount of data being indexed, importing can take several hours, and rebuilding can take up to ten times longer. 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.Note also that when the upgrade option is set to import, the associated full-text indexes are rebuilt if a full-text catalog is not available. Per modificare l'impostazione della proprietà del server upgrade_option , usare sp_fulltext_service.To change the setting of the upgrade_option server property, use sp_fulltext_service.

Sicurezza Security

Per motivi di sicurezza, è consigliabile non collegare o ripristinare database da origini sconosciute o non attendibili.For security purposes, we recommend that you do not attach or restore databases from unknown or untrusted sources. Tali database possono contenere codice dannoso che potrebbe eseguire codice Transact-SQLTransact-SQL indesiderato o causare errori modificando lo schema o la struttura fisica di database.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. Prima di utilizzare un database da un'origine sconosciuta o non attendibile, eseguire DBCC CHECKDB sul database in un server non di produzione ed esaminare il codice contenuto nel database, ad esempio le stored procedure o altro codice definito dall'utente.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server and also examine the code, such as stored procedures or other user-defined code, in the database.

Autorizzazioni Permissions

Se il database da ripristinare non esiste, per eseguire un'operazione RESTORE l'utente deve disporre delle autorizzazioni CREATE DATABASE.If the database being restored does not exist, the user must have CREATE DATABASE permissions to be able to execute RESTORE. 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.If the database exists, RESTORE permissions default to members of the sysadmin and dbcreator fixed server roles and the owner (dbo) of the database.

Le autorizzazioni per l'istruzione RESTORE vengono assegnate ai ruoli in cui le informazioni sull'appartenenza sono sempre disponibili per il server.RESTORE permissions are given to roles in which membership information is always readily available to the server. L'appartenenza ai ruoli predefiniti del database può essere controllata solo quando il database è accessibile e non è danneggiato, condizioni che non risultano sempre vere quando si esegue un'operazione RESTORE, quindi i membri del ruolo predefinito del database db_owner non hanno le autorizzazioni per l'istruzione RESTORE.Because fixed database role membership can be checked only when the database is accessible and undamaged, which is not always the case when RESTORE is executed, members of the db_owner fixed database role do not have RESTORE permissions.

Ripristinare un database in un nuovo percorso e facoltativamente rinominare il database usando SSMSRestore a database to a new location; optionally rename the database using SSMS

  1. Connettersi all'istanza appropriata di Motore di database di SQL ServerSQL Server Database Enginee quindi fare clic sul nome del server in Esplora oggetti per espandere l'albero del server.Connect to the appropriate instance of the Motore di database di SQL ServerSQL Server Database Engine, and then in Object Explorer, click the server name to expand the server tree.

  2. Fare clic con il pulsante destro del mouse su Database, quindi scegliere Ripristina database.Right-click Databases, and then click Restore Database. Verrà visualizzata la finestra di dialogo Ripristina database .The Restore Database dialog box opens.

  3. Per specificare l'origine e il percorso dei set di backup da ripristinare, nella pagina Generale , utilizzare la sezione Origine .On the General page, use the Source section to specify the source and location of the backup sets to restore. Selezionare una delle opzioni seguenti:Select one of the following options:

    • DatabaseDatabase

      Selezionare il database da ripristinare dall'elenco a discesa.Select the database to restore from the drop-down list. Nell'elenco sono inclusi solo i database di cui è stato eseguito il backup in base alla cronologia dei backup di msdb .The list contains only databases that have been backed up according to the msdb backup history.

    NOTA: se il backup viene eseguito da un server diverso, il server di destinazione non avrà le informazioni della cronologia di backup per il database specificato.NOTE: If the backup is taken from a different server, the destination server will not have the backup history information for the specified database. In questo caso, selezionare Dispositivo per specificare manualmente il file o il dispositivo da ripristinare.In this case, select Device to manually specify the file or device to restore.

    1. DispositivoDevice

      Fare clic sul pulsante Sfoglia (...) per aprire la finestra di dialogo Seleziona dispositivi di backup .Click the browse (...) button to open the Select backup devices dialog box. Nella casella Tipi di supporti di backup selezionare uno dei tipi di dispositivi elencati.In the Backup media type box, select one of the listed device types. Per selezionare uno o più dispositivi per la casella Supporti di backup , fare clic su Aggiungi.To select one or more devices for the Backup media box, click Add.

      Dopo avere aggiunto i dispositivi desiderati nella casella di riepilogo Dispositivi di backup , fare clic su OK per tornare alla pagina Generale .After you add the devices you want to the Backup media list box, click OK to return to the General page.

      Nella casella di riepilogo Origine: Dispositivo: Database selezionare il nome del database da ripristinare.In the Source: Device: Database list box, select the name of the database which should be restored.

      Nota Questo elenco è disponibile solo se si seleziona Dispositivo .Note This list is only available when Device is selected. Saranno disponibili solo i database che dispongono di backup sul dispositivo selezionato.Only databases that have backups on the selected device will be available.

  4. Nella sezione Destinazione , la casella Database viene popolata automaticamente con il nome del database da ripristinare.In the Destination section, the Database box is automatically populated with the name of the database to be restored. Per modificare il nome del database, immettere il nome nuovo nella casella Database .To change the name of the database, enter the new name in the Database box.

  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.In the Restore to box, leave the default as To the last backup taken or click on Timeline to access the Backup Timeline dialog box to manually select a point in time to stop the recovery action. Per ulteriori informazioni sulla designazione di un momento specifico, vedere Backup Timeline .See Backup Timeline for more information on designating a specific point in time.

  6. Nella griglia Selezionare i set di backup da ripristinare selezionare i set di backup che si desidera ripristinare.In the Backup sets to restore grid, select the backups to restore. In questa griglia vengono visualizzati i backup disponibili per il percorso specificato.This grid displays the backups available for the specified location. Per impostazione predefinita, viene suggerito un piano di recupero.By default, a recovery plan is suggested. Per ignorare il piano di recupero suggerito, è possibile modificare le impostazioni selezionate nella griglia.To override the suggested recovery plan, you can change the selections in the grid. I backup che dipendono dal ripristino di un backup precedente vengono automaticamente deselezionati quando il backup precedente è deselezionato.Backups that depend on the restoration of an earlier backup are automatically deselected when the earlier backup is deselected.

    Per informazioni sulle colonne nella griglia Set di backup da ripristinare, vedere Ripristina database((pagina Generale)).For information about the columns in the Backup sets to restore grid, see Restore Database (General Page).

  7. Per specificare il nuovo percorso dei file di database, selezionare la pagina File , quindi fare clic su Riloca tutti i file nella cartella.To specify the new location of the database files, select the Files page, and then click Relocate all files to folder. Fornire un nuovo percorso per Cartella file di dati e Cartella file di log.Provide a new location for the Data file folder and Log file folder. Per altre informazioni su questa griglia, vedere Ripristina database((pagina File)).For more information about this grid, see Restore Database (Files Page).

  8. Se lo si desidera, regolare le opzioni nella pagina Opzioni .On the Options page, adjust the options if you want. Per altre informazioni su queste opzioni, vedere Ripristina database ((pagina Opzioni)).For more information about these options, see Restore Database (Options Page).

    Ripristinare un database in un nuovo percorso e facoltativamente rinominare il database usando T-SQLRestore database to a new location; optionally rename the database using T-SQL

  9. Facoltativamente, determinare i nomi logici e fisici dei file del set di backup che contiene il backup di database completo da ripristinare.Optionally, determine the logical and physical names of the files in the backup set that contains the full database backup that you want to restore. Questa istruzione restituisce un elenco dei file di database e di log contenuti nel set di backup.This statement returns a list of the database and log files contained in the backup set. La sintassi di base è la seguente:The basic syntax is as follows:

    RESTORE FILELISTONLY FROM <dispositivo_backup> WITH FILE = backup_set_file_numberRESTORE FILELISTONLY FROM <backup_device> WITH FILE = backup_set_file_number

    Dove backup_set_file_number indica la posizione del backup nel set di supporti.Here, backup_set_file_number indicates the position of the backup in the media set. È possibile ottenere la posizione di un set di backup utilizzando l'istruzione RESTORE HEADERONLY .You can obtain the position of a backup set by using the RESTORE HEADERONLY statement. Per altre informazioni, vedere "Specifica di un set di backup" in Argomenti RESTORE (Transact-SQL).For more information, see "Specifying a Backup Set" in RESTORE Arguments (Transact-SQL).

    Questa istruzione supporta inoltre alcune opzioni WITH.This statement also supports a number of WITH options. Per altre informazioni, vedere RESTORE FILELISTONLY (Transact-SQL).For more information, see RESTORE FILELISTONLY (Transact-SQL).

  10. Eseguire l'istruzione RESTORE DATABASE per ripristinare il backup di database completo.Use the RESTORE DATABASE statement to restore the full database backup. Per impostazione predefinita, i file di dati e di log vengono ripristinati nei percorsi originali.By default, data and log files are restored to their original locations. 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.To relocate a database, use the MOVE option to relocate each of the database files and to avoid collisions with existing files.

    La sintassi Transact-SQLTransact-SQL di base per il ripristino del database in un nuovo percorso e con un nuovo nome è la seguente:The basic Transact-SQLTransact-SQL syntax for restoring the database to a new location and a new name is:

    RESTORE DATABASE new_database_nameRESTORE DATABASE new_database_name

    FROM backup_device [ ,...n ]FROM backup_device [ ,...n ]

    [ WITH[ WITH

    {{

    [ RECOVERY | NORECOVERY ][ RECOVERY | NORECOVERY ]

    [ , ] [ FILE ={ backup_set_file_number | @backup_set_file_number } ][ , ] [ FILE ={ backup_set_file_number | @backup_set_file_number } ]

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

    }}

    ;;

    NOTANOTE! 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.When preparing to relocate a database on a different disk, you should verify that sufficient space is available and identify any potential collisions with existing files. A tale scopo, utilizzare un'istruzione RESTORE VERIFYONLY che specifica gli stessi parametri MOVE che si intende utilizzare nell'istruzione RESTORE DATABASE.This involves using a RESTORE VERIFYONLY statement that specifies the same MOVE parameters that you plan to use in your RESTORE DATABASE statement.

    Nella tabella seguente vengono descritti argomenti di questa istruzione RESTORE ai fini del ripristino di un database in un nuovo percorso.The following table describes arguments of this RESTORE statement in terms of restoring a database to a new location. Per altre informazioni su questi argomenti, vedere RESTORE (Transact-SQL).For more information about these arguments, see RESTORE (Transact-SQL).

    new_database_namenew_database_name
    Nuovo nome del database.The new name for the database.

    NOTA: se il database viene ripristinato in una diversa istanza del server, è possibile usare il nome di database originale anziché uno nuovo.NOTE: If you are restoring the database to a different server instance, you can use the original database name instead of a new name.

    backup_device [ ,...n ]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.Specifies a comma-separated list of from 1 to 64 backup devices from which the database backup is to be restored. È possibile specificare un dispositivo di backup fisico oppure un dispositivo di backup logico corrispondente, se già definito.You can specify a physical backup device, or you can specify a corresponding logical backup device, if defined. Per specificare un dispositivo di backup fisico, utilizzare l'opzione DISK o TAPE:To specify a physical backup device, use the DISK or TAPE option:

    { DISK | TAPE } =physical_backup_device_name{ DISK | TAPE } =physical_backup_device_name

    Per altre informazioni, vedere Dispositivi di backup (SQL Server).For more information, see Backup Devices (SQL Server).

    { RECOVERY | NORECOVERY }{ 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.If the database uses the full recovery model, you might need to apply transaction log backups after you restore the database. In questo caso, specificare l'opzione NORECOVERY.In this case, specify the NORECOVERY option.

    In caso contrario, utilizzare l'opzione RECOVERY (impostazione predefinita).Otherwise, use the RECOVERY option, which is the default.

    FILE = { backup_set_file_number | @backup_set_file_number }FILE = { backup_set_file_number | @backup_set_file_number }
    Identifica il set di backup da ripristinare.Identifies the backup set to be restored. Il valore 1 per backup_set_file_number 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.For example, a backup_set_file_number of 1 indicates the first backup set on the backup medium and a backup_set_file_number of 2 indicates the second backup set. È possibile ottenere il valore backup_set_file_number di un backup usando l'istruzione RESTORE HEADERONLY .You can obtain the backup_set_file_number of a backup set by using the RESTORE HEADERONLY statement.

    Se questa opzione non è specificata, per impostazione predefinita viene utilizzato il primo set di backup disponibili sul dispositivo di backup.When this option is not specified, the default is to use the first backup set on the backup device.

    Per altre informazioni, vedere "Specifica di un set di backup" in Argomenti RESTORE (Transact-SQL).For more information, see "Specifying a Backup Set," in RESTORE Arguments (Transact-SQL).

    MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]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.Specifies that the data or log file specified by logical_file_name_in_backup is to be restored to the location specified by operating_system_file_name. Specificare un'istruzione MOVE per ogni file logico che si desidera ripristinare dal set di backup in un nuovo percorso.Specify a MOVE statement for every logical file you want to restore from the backup set to a new location.

    OpzioneOption DescrizioneDescription
    logical_file_name_in_backuplogical_file_name_in_backup Specifica il nome logico di un file di dati o di log da includere nel set di backup.Specifies the logical name of a data or log file in the backup set. 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.The logical file name of a data or log file in a backup set matches its logical name in the database when the backup set was created.



    Nota: per ottenere un elenco dei file logici dal set di backup, usare RESTORE FILELISTONLY.Note: To obtain a list of the logical files from the backup set, use RESTORE FILELISTONLY.
    operating_system_file_nameoperating_system_file_name Specifica un nuovo percorso per il file indicato da logical_file_name_in_backup.Specifies a new location for the file specified by logical_file_name_in_backup. Il file verrà ripristinato a questo percorso.The file will be restored to this location.

    Facoltativamente, operating_system_file_name specifica un nuovo nome per il file ripristinato.Optionally, operating_system_file_name specifies a new file name for the restored file. Questo passaggio è necessario se si crea una copia di un database esistente nella stessa istanza del server.This is necessary if you are creating a copy of an existing database on the same server instance.
    n Segnaposto tramite cui viene indicata la possibilità di specificare istruzioni MOVE aggiuntive.Is a placeholder indicating that you can specify additional MOVE statements.

Esempio (Transact-SQL) Example (Transact-SQL)

In questo esempio viene creato un nuovo database denominato MyAdvWorks ripristinando un backup del database di esempio AdventureWorks2012AdventureWorks2012 in cui sono inclusi due file: AdventureWorks2012AdventureWorks2012_Data e AdventureWorks2012AdventureWorks2012_Log.This example creates a new database named MyAdvWorks by restoring a backup of the AdventureWorks2012AdventureWorks2012 sample database, which includes two files: AdventureWorks2012AdventureWorks2012_Data and AdventureWorks2012AdventureWorks2012_Log. In questo database viene utilizzato il modello di recupero con registrazione minima.This database uses the simple recovery model. Il database AdventureWorks2012AdventureWorks2012 è già presente nell'istanza del server, pertanto i file del backup devono essere ripristinati in un nuovo percorso.The AdventureWorks2012AdventureWorks2012 database already exists on the server instance, so the files in the backup must be restored to a new location. L'istruzione RESTORE FILELISTONLY viene utilizzata per stabilire il numero e i nomi dei file del database da ripristinare.The RESTORE FILELISTONLY statement is used to determine the number and names of the files in the database being restored. Il backup del database corrisponde al primo set disponibile sul dispositivo.The database backup is the first backup set on the backup device.

NOTA: gli esempi di backup e di ripristino del log delle transazioni, inclusi i ripristini temporizzati, usano il database MyAdvWorks_FullRM creato da AdventureWorks2012AdventureWorks2012 esattamente come nell'esempio seguente basato su MyAdvWorks.NOTE: The examples of backing up and restoring the transaction log, including point-in-time restores, use the MyAdvWorks_FullRM database that is created from AdventureWorks2012AdventureWorks2012 just like the following MyAdvWorks example. Tuttavia, è necessario modificare il database MyAdvWorks_FullRM risultante per utilizzare il modello di recupero con registrazione completa tramite la seguente istruzione Transact-SQLTransact-SQL: ALTER DATABASE <nome_database> SET RECOVERY FULL.However, the resulting MyAdvWorks_FullRM database must be changed to use the full recovery model by using the following Transact-SQLTransact-SQL statement: ALTER DATABASE <database_name> 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 AdventureWorks2012AdventureWorks2012 , vedere Creare un backup completo del database (SQL Server).For an example of how to create a full database backup of the AdventureWorks2012AdventureWorks2012 database, see Create a Full Database Backup (SQL Server).

Vedere ancheSee also

Gestire i metadati quando si rende disponibile un database in un'altra istanza del server (SQL Server) Manage Metadata When Making a Database Available on Another Server Instance (SQL Server)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
Copiare database tramite backup e ripristinoCopy Databases with Backup and Restore