Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Si applica a:SQL Server
Questo articolo descrive come ripristinare un database di SQL Server in un nuovo percorso e, facoltativamente, rinominare il database in SQL Server usando SQL Server Management Studio (SSMS) 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.
Limitazioni
- L'amministratore di sistema che esegue il ripristino di un backup completo del database deve essere l'unico utente collegato al database.
Prerequisiti
Quando si usa il 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 altre informazioni, vedere Eseguire il backup di un log delle transazioni.
Per ripristinare un database crittografato, è necessario avere accesso al certificato o alla chiave asimmetrica usata per crittografare il database. Senza tale certificato o chiave asimmetrica, non è possibile ripristinare il database. È necessario conservare il certificato usato per crittografare la chiave di crittografia del database, purché sia necessario il backup. Per altre informazioni, vedere Certificati e chiavi asimmetriche di SQL Server.
Consigli
Per altre considerazioni per lo spostamento di un database, vedere Copiare database con backup e ripristino.
Se si ripristina un database SQL Server 2005 (9.x) o versione successiva in SQL Server, il database viene aggiornato automaticamente. In genere, il database diventa subito disponibile. Tuttavia, se un database di SQL Server 2005 (9.x) dispone di indici full-text, il processo di aggiornamento importa, reimposta o ricompila tali indici, a seconda dell'impostazione della proprietà del
upgrade_optionserver. Se l'opzione di aggiornamento è impostata per importare (upgrade_option = 2) o ricompilare (upgrade_option = 0), gli indici full-text non sono disponibili durante l'aggiornamento. A seconda della quantità di dati indicizzati, l'importazione può richiedere diverse ore, mentre la ricompilazione può risultare 10 volte più lunga. Inoltre, quando l'opzione di aggiornamento è impostata per l'importazione, gli indici full-text associati vengono ricompilati se non è disponibile un catalogo full-text. Per modificare l'impostazione della proprietà delupgrade_optionserver, utilizzare sp_fulltext_service.
Sicurezza
Ai fini della sicurezza, non è consigliabile collegare o ripristinare database da origini sconosciute o non attendibili. Tali database possono contenere codice dannoso che potrebbe essere eseguito Transact-SQL codice imprevisto o causare errori modificando lo schema o la struttura fisica del database. 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.
Autorizzazioni
Se il database da ripristinare non esiste, l'utente deve disporre CREATE DATABASE delle autorizzazioni per poter eseguire RESTORE. Se il database esiste, RESTORE le autorizzazioni predefinite sono i membri dei ruoli predefiniti del server sysadmin e dbcreator e il proprietario (dbo) del database.
RESTORE Le autorizzazioni vengono concesse ai ruoli in cui le informazioni sull'appartenenza sono sempre disponibili per il server. Poiché l'appartenenza al ruolo predefinito del database può essere controllata solo quando il database è accessibile e non danneggiato, che non è sempre il caso in RESTORE cui viene eseguita, i membri del ruolo predefinito del database db_owner non dispongono RESTORE delle autorizzazioni.
Ripristinare un database in un nuovo percorso e, facoltativamente, rinominare il database usando SSMS
Connettersi all'istanza appropriata del motore di database di SQL Server e quindi, in Esplora oggetti, selezionare il nome del server per espandere l'albero del server.
Fare clic con il pulsante destro del mouse su Database e quindi scegliere Ripristina database.... Verrà visualizzata la finestra di dialogo Ripristina database .
Nella sezione Origine della pagina Generale specificare l'origine e il percorso dei set di backup da ripristinare. Selezionare una delle seguenti opzioni:
Database
Selezionare il database da ripristinare dall'elenco a discesa. L'elenco contiene solo i database di cui è stato eseguito il backup in base alla
msdbcronologia di backup.Nota
Se il backup viene creato da un server diverso, il server di destinazione non avrà le informazioni sulla cronologia di backup per il database specificato. In questo caso, selezionare Dispositivo per specificare manualmente il file o il dispositivo da ripristinare.
Dispositivo
Selezionare il 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, selezionare Aggiungi.
Dopo aver aggiunto i dispositivi da aggiungere all'elenco Supporti di backup , selezionare OK per tornare alla pagina Generale .
Nell'elenco Origine: Dispositivo: Database selezionare il nome del database da ripristinare.
Nota
Questo elenco è disponibile solo quando è selezionato Dispositivo . Sono disponibili solo i database con backup nel dispositivo selezionato.
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 .
Nella casella Ripristina in lasciare l'impostazione predefinita Su ultimo backup eseguito o selezionare Sequenza temporale per accedere alla finestra di dialogo Sequenza temporale di backup per selezionare manualmente un punto nel tempo per arrestare l'azione di ripristino. Per altre informazioni sulla progettazione di un punto specifico nel tempo, vedere Sequenza temporale di backup .
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 nella griglia Set di backup da ripristinare, vedere Ripristinare il database (pagina Generale).
Per specificare il nuovo percorso dei file di database, selezionare la pagina File, quindi selezionare Riloca tutti i file nella cartella. Fornire un nuovo percorso per Cartella file di dati e Cartella file di log. Per altre informazioni su questa griglia, vedere Ripristina database (pagina File).
Nella pagina Opzioni modificare le opzioni se si desidera. Per altre informazioni su queste opzioni, vedere Ripristina database (pagina Opzioni).
Ripristinare il database in un nuovo percorso e, facoltativamente, rinominare il database usando T-SQL
Facoltativamente, determinare i nomi logici e fisici dei file del set di backup che contiene il backup di database completo da ripristinare. Questa istruzione mostra la sintassi di base per restituire un elenco dei file di database e di log contenuti nel set di backup:
RESTORE FILELISTONLY FROM backup_device WITH FILE = *backup_set_file_numberDove backup_set_file_number indica la posizione del backup nel set di supporti. È possibile ottenere la posizione di un set di backup utilizzando l'istruzione RESTORE HEADERONLY . Per altre informazioni, vedere Specifica di un set di backup.
Questa istruzione supporta anche diverse
WITHopzioni. Per altre informazioni, vedere RESTORE FILELISTONLY.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 rilocare un database, usare l'opzione
MOVEper rilocare ogni file di database ed evitare conflitti con i file esistenti.
La sintassi di base Transact-SQL per ripristinare il database in un nuovo percorso con un nuovo nome è:
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. Questa verifica prevede l'uso di istruzioni RESTORE - VERIFYONLY che specifica gli stessi MOVE parametri che si prevede di usare nell'istruzione RESTORE DATABASE .
Le informazioni seguenti descrivono gli argomenti di questa RESTORE istruzione correlati al ripristino di un database in una nuova posizione. Per altre informazioni su questi argomenti, vedere Istruzioni RESTORE.
new_database_name
Nuovo nome del database.
Nota
Se si ripristina il database in un'istanza del server diversa, è possibile usare il nome del database originale anziché un nuovo nome.
backup_device [ , ... n ]
Specifica un elenco delimitato da virgole di dispositivi di backup compresi tra 1 e 64 da cui ripristinare il backup del database. È possibile specificare un dispositivo di backup fisico oppure specificare un dispositivo di backup logico corrispondente, se definito. Per specificare un dispositivo di backup fisico, usare l'opzione DISK o TAPE :
{ DISK | TAPE } = physical_backup_device_name
Per altre informazioni, vedere Dispositivi di backup.
{ RECOVERY | NORECOVERY }
Se il database utilizza il modello di recupero completo, potrebbe essere necessario applicare i backup del log delle transazioni dopo aver ripristinato il database. In questo caso, specificare l'opzione NORECOVERY .
In caso contrario, usare l'opzione RECOVERY , ovvero l'impostazione predefinita.
FILE = { backup_set_file_number | @backup_set_file_number }
Identifica il set di backup da ripristinare. Ad esempio, un backup_set_file_number di indica il primo set di 1 backup nel supporto di backup e un backup_set_file_number di indica il secondo set di 2 backup. È possibile ottenere il backup_set_file_number di un set di backup usando 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 altre informazioni, vedere Argomenti 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 da ripristinare dal set di backup a 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 dal set di backup, usare istruzioni RESTORE - FILELISTONLY. |
operating_system_file_name |
Specifica un nuovo percorso per il file specificato da logical_file_name_in_backup. Il file è stato ripristinato in questo percorso.Facoltativamente, operating_system_file_name specifica un nuovo nome di file per il file ripristinato. Se si crea una copia di un database esistente nella stessa istanza del server, è necessario un nuovo nome. |
n |
Segnaposto che indica che è possibile specificare istruzioni aggiuntive MOVE . |
Esempio (Transact-SQL)
In questo esempio viene creato un nuovo database denominato MyAdvWorks ripristinando un backup del AdventureWorks2025 database di esempio, che include due file: AdventureWorks2025_Data e AdventureWorks2025_Log. In questo database viene utilizzato il modello di recupero semplice. Il database AdventureWorks2025 è 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 determinare il numero e i nomi dei file nel database da ripristinare. Il backup del database è il primo set di backup sul dispositivo di backup.
Nota
Gli esempi di backup e ripristino del log delle transazioni, inclusi i ripristini temporizzato, usano il MyAdvWorks_FullRM database creato da AdventureWorks2025, come nell'esempio seguente MyAdvWorks . È tuttavia necessario modificare il database risultante MyAdvWorks_FullRM per usare il modello di recupero con registrazione completa usando l'istruzione Transact-SQL seguente: ALTER DATABASE <database_name> SET RECOVERY FULL.
USE master;
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks2022_Backup is the name of the backup device.
RESTORE FILELISTONLY
FROM AdventureWorks2022_Backup;
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
FROM AdventureWorks2022_Backup
WITH RECOVERY,
MOVE 'AdventureWorks2022_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',
MOVE 'AdventureWorks2022_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';
GO
Per un esempio di come creare un backup completo del AdventureWorks2025 database, vedere Creare un backup completo del database.
Attività correlate
- Creare un backup completo del database
- Ripristinare un backup del database con SSMS
- Eseguire il backup di un log delle transazioni
- Ripristinare un backup del log delle transazioni (SQL Server)