Istruzioni RESTORE (Transact-SQL)
Consente di ripristinare i backup del database SQL eseguiti tramite il comando BACKUP.
Selezionare un prodotto
Nella riga seguente selezionare il nome del prodotto a cui si è interessati. Verranno visualizzate solo le informazioni per tale prodotto.
Per altre informazioni sulle convenzioni della sintassi, vedere Convenzioni della sintassi Transact-SQL.
* SQL Server *
SQL Server
Questo comando consente di effettuare gli scenari di ripristino seguenti:
- Ripristinare un intero database da un backup completo del database (ripristino completo).
- Ripristinare parte di un database (ripristino parziale).
- Ripristinare file o filegroup in un database (ripristino di file).
- Ripristinare pagine specifiche in un database (ripristino di pagina).
- Ripristinare un log delle transazioni in un database (ripristino del log delle transazioni).
- Eseguire un ripristino temporizzato di un database fino al punto nel tempo acquisito in uno snapshot del database.
Altre risorse
- Per informazioni sugli scenari di ripristino di SQL Server, vedere Panoramica del ripristino e del recupero.
- Quando si ripristina un database da un'altra istanza, vedere le informazioni in Gestione dei metadati quando si rende disponibile un database in un'altra istanza del server (SQL Server).
- Per altre informazioni sul ripristino da Archiviazione BLOB di Microsoft Azure, vedere Backup e ripristino di SQL Server con Archiviazione BLOB di Microsoft Azure.
- Il backup e il ripristino nell'archivio oggetti compatibile con S3 è stato introdotto in SQL Server 2022 (16.x). Per altre informazioni sul ripristino dall'archiviazione oggetti compatibile con S3, vedere Backup e ripristino di SQL Server con archiviazione oggetti compatibile con S3. Esaminare anche l'opzione per il backup di SQL Server nell'URL per l'archiviazione di oggetti compatibile con S3.
Sintassi
- Per altre informazioni sulle descrizioni degli argomenti, vedere Argomenti dell'istruzione RESTORE.
--To Restore an Entire Database from a Full database backup (a Complete Restore):
RESTORE DATABASE { database_name | @database_name_var }
[ FROM <backup_device> [ ,...n ] ]
[ WITH
{
[ RECOVERY | NORECOVERY | STANDBY =
{standby_file_name | @standby_file_name_var }
]
| , <general_WITH_options> [ ,...n ]
| , <replication_WITH_option>
| , <change_data_capture_WITH_option>
| , <FILESTREAM_WITH_option>
| , <service_broker_WITH options>
| , <point_in_time_WITH_options-RESTORE_DATABASE>
} [ ,...n ]
]
[;]
--To perform the first step of the initial restore sequence of a piecemeal restore:
RESTORE DATABASE { database_name | @database_name_var }
<files_or_filegroups> [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
WITH
PARTIAL, NORECOVERY
[ , <general_WITH_options> [ ,...n ]
| , <point_in_time_WITH_options-RESTORE_DATABASE>
] [ ,...n ]
[;]
--To Restore Specific Files or Filegroups:
RESTORE DATABASE { database_name | @database_name_var }
<file_or_filegroup> [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
WITH
{
[ RECOVERY | NORECOVERY ]
[ , <general_WITH_options> [ ,...n ] ]
} [ ,...n ]
[;]
--To Restore Specific Pages:
RESTORE DATABASE { database_name | @database_name_var }
PAGE = 'file:page [ ,...n ]'
[ , <file_or_filegroups> ] [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
WITH
NORECOVERY
[ , <general_WITH_options> [ ,...n ] ]
[;]
--To Restore a Transaction Log:
RESTORE LOG { database_name | @database_name_var }
[ <file_or_filegroup_or_pages> [ ,...n ] ]
[ FROM <backup_device> [ ,...n ] ]
[ WITH
{
[ RECOVERY | NORECOVERY | STANDBY =
{standby_file_name | @standby_file_name_var }
]
| , <general_WITH_options> [ ,...n ]
| , <replication_WITH_option>
| , <point_in_time_WITH_options-RESTORE_LOG>
} [ ,...n ]
]
[;]
--To Revert a Database to a Database Snapshot:
RESTORE DATABASE { database_name | @database_name_var }
FROM DATABASE_SNAPSHOT = database_snapshot_name
<backup_device>::=
{
{ logical_backup_device_name |
@logical_backup_device_name_var }
| { DISK
| TAPE
| URL
} = { 'physical_backup_device_name' |
@physical_backup_device_name_var }
}
<files_or_filegroups>::=
{
FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }
| FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
| READ_WRITE_FILEGROUPS
}
<general_WITH_options> [ ,...n ]::=
--Restore Operation Options
MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name'
[ ,...n ]
| REPLACE
| RESTART
| RESTRICTED_USER | CREDENTIAL
--Backup Set Options
| FILE = { backup_set_file_number | @backup_set_file_number }
| PASSWORD = { password | @password_variable }
| [ METADATA_ONLY | SNAPSHOT ] [ DBNAME = { database_name | @database_name_variable } ]
--Media Set Options
| MEDIANAME = { media_name | @media_name_variable }
| MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
| BLOCKSIZE = { blocksize | @blocksize_variable }
--Data Transfer Options
| BUFFERCOUNT = { buffercount | @buffercount_variable }
| MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }
--Error Management Options
| { CHECKSUM | NO_CHECKSUM }
| { STOP_ON_ERROR | CONTINUE_AFTER_ERROR }
--Monitoring Options
| STATS [ = percentage ]
--Tape Options.
| { REWIND | NOREWIND }
| { UNLOAD | NOUNLOAD }
<replication_WITH_option>::=
| KEEP_REPLICATION
<change_data_capture_WITH_option>::=
| KEEP_CDC
<FILESTREAM_WITH_option>::=
| FILESTREAM ( DIRECTORY_NAME = directory_name )
<service_broker_WITH_options>::=
| ENABLE_BROKER
| ERROR_BROKER_CONVERSATIONS
| NEW_BROKER
<point_in_time_WITH_options-RESTORE_DATABASE>::=
| {
STOPAT = { 'datetime'| @datetime_var }
| STOPATMARK = 'lsn:lsn_number'
[ AFTER 'datetime']
| STOPBEFOREMARK = 'lsn:lsn_number'
[ AFTER 'datetime']
}
<point_in_time_WITH_options-RESTORE_LOG>::=
| {
STOPAT = { 'datetime'| @datetime_var }
| STOPATMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER 'datetime']
| STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER 'datetime']
}
Argomenti
Per le descrizioni degli argomenti, vedere Argomenti dell'istruzione RESTORE.
Informazioni sugli scenari di ripristino
SQL Server supporta un'ampia gamma di scenari di ripristino:
ripristino di database completo
Viene ripristinato l'intero database, partendo da un backup completo del database, che può essere seguito dal ripristino di un backup differenziale del database e dei backup del log. Per altre informazioni, vedere Ripristini completi del database - Modello di recupero con registrazione minima o Ripristini completi del database - Modello di recupero con registrazione completa.
Ripristino di file
Viene ripristinato un file o un filegroup in un database con più filegroup. Con il modello di recupero con registrazione minima, il file deve appartenere a un filegroup di sola lettura. Dopo un ripristino di file completo è possibile ripristinare un backup di file differenziale. Per altre informazioni, vedere Ripristini di file - Modello di recupero con registrazione completa e Ripristini di file - Modello di recupero con registrazione minima.
Ripristino di pagine
Vengono ripristinate singole pagine. Il ripristino di pagine è disponibile solo con i modelli di recupero con registrazione completa e con registrazione minima delle operazioni bulk. Per altre informazioni, vedere Ripristinare pagine - SQL Server.
Ripristino a fasi
Il database viene ripristinato in più fasi, partendo dal filegroup primario e da uno o più filegroup secondari. Il ripristino a fasi inizia con un comando RESTORE DATABASE con l'opzione PARTIAL e l'impostazione di uno o più filegroup secondari da ripristinare. Per altre informazioni, vedere Ripristini a fasi - SQL Server.
Solo recupero
Vengono recuperati i dati che sono già coerenti con il database e che devono solo essere resi disponibili. Per altre informazioni, vedere Recupero di un database senza ripristino dei dati.
Ripristino del log delle transazioni
Con il modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk, il ripristino dei backup del log è necessario per raggiungere il punto di recupero desiderato. Per altre informazioni sul ripristino di backup del log, vedere Applicazione dei backup di log delle transazioni - SQL Server.
Preparare un database di disponibilità per un gruppo di disponibilità Always On
Per altre informazioni, vedere Preparare manualmente un database secondario per un gruppo di disponibilità - SQL Server.
Preparare un database mirror per il mirroring del database
Per altre informazioni, vedere Preparazione di un database mirror per il mirroring - SQL Server.
Ripristino online
Nota
Il ripristino in linea è consentito solo in SQL Server Enterprise Edition.
Se il ripristino online è supportato e il database è online, i ripristini di file e pagine vengono eseguiti automaticamente online, così come i ripristini di filegroup secondari dopo la fase iniziale di un ripristino a fasi.
Nota
Nei ripristini online possono essere incluse transazioni posticipate.
Per altre informazioni, vedere Ripristino in linea.
Considerazioni aggiuntive sulle opzioni RESTORE
Parole chiave RESTORE obsolete
Le parole chiave seguenti sono state sospese in SQL Server 2008 (10.0.x):
Parola chiave obsoleta | Parola chiave di sostituzione | Esempio di parola chiave di sostituzione |
---|---|---|
LOAD | RESTORE | RESTORE DATABASE |
TRANSACTION | LOG | RESTORE LOG |
DBO_ONLY | RESTRICTED_USER | RESTORE DATABASE ... WITH RESTRICTED_USER |
RESTORE LOG
È possibile includere un elenco di file in RESTORE LOG per consentire la creazione di file durante il rollforward. Questa procedura viene utilizzata quando il backup del log contiene record di log scritti al momento dell'aggiunta di un file al database.
Nota
Per un database impostato per l'utilizzo del modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk, nella maggior parte dei casi è necessario eseguire il backup della parte finale del log prima di ripristinare il database. Se si esegue il ripristino di un database senza aver prima eseguito il backup della parte finale del log si verificherà un errore, a meno che nell'istruzione RESTORE DATABASE non sia inclusa la clausola WITH REPLACE o WITH STOPAT, che deve consentire di specificare l'ora o la transazione verificatasi al termine del backup dei dati. Per altre informazioni sui backup della parte finale del log, vedere Backup della parte finale del log.
Differenze tra RECOVERY e NORECOVERY
Il rollback viene controllato dall'istruzione RESTORE tramite le opzioni [ RECOVERY | NORECOVERY ]:
NORECOVERY specifica che il rollback non viene eseguito. Questo consente la continuazione del rollforward con l'istruzione successiva nella sequenza.
In questo caso, tramite la sequenza di ripristino è possibile ripristinare altri backup ed eseguirne il roll forward.
RECOVERY è l'opzione predefinita e indica che il rollback verrà eseguito dopo il completamento del rollforward per il backup corrente. Non è possibile ripristinare ulteriori backup. Selezionare questa opzione dopo aver ripristinato tutti i backup necessari.
Per il recupero del database è necessario che l'intero set di dati da ripristinare (set di rollforward) sia coerente con il database. Se il rollforward del set di rollforward non è stato eseguito a un livello sufficiente per assicurarne la coerenza con il database e si specifica l'opzione RECOVERY, il motore di database genera un errore. Per altre informazioni sul processo di recupero, vedere Panoramica del ripristino e del recupero (SQL Server).
Informazioni sulla compatibilità
I backup di master
, model
e msdb
creati usando una versione precedente di SQL Server non possono essere ripristinati da SQL Server.
Nota
Non possibile ripristinare alcun backup di SQL Server a una versione di SQL Server precedente a quella in cui è stato creato il backup.
Ogni versione di SQL Server usa un percorso predefinito diverso rispetto alle versioni precedenti. Per ripristinare un database creato nel percorso predefinito per i backup di versioni precedenti, è necessario utilizzare l'opzione MOVE. Per informazioni sul nuovo percorso predefinito, vedere Percorsi dei file per le istanze predefinite e denominate di SQL Server.
Dopo aver ripristinato un database di una versione precedente a SQL Server, il database viene aggiornato automaticamente. In genere, il database diventa subito disponibile. Se tuttavia un database di SQL Server 2005 (9.x) include 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 per l'importazione (upgrade_option = 2) o la 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 , usare sp_fulltext_service.
Quando un database viene collegato per la prima volta a una nuova istanza di SQL Server o viene ripristinato, nel server non viene ancora archiviata una copia della chiave master del database (crittografata dalla chiave master del servizio). È necessario usare l'istruzione OPEN MASTER KEY per decrittografare la chiave master del database. Dopo aver decrittografato la DMK, è possibile usare l'istruzione ALTER MASTER KEY REGENERATE per abilitare la decrittografia automatica per le operazioni successive, in modo da fornire al server una copia della DMK crittografata con la chiave master del servizio (SMK). Quando un database è stato aggiornato da una versione precedente, la DMK deve essere rigenerata per usare l'algoritmo AES più recente. Per altre informazioni sulla rigenerazione della DMK, vedere ALTER MASTER KEY. Il tempo richiesto per rigenerare la chiave DMK e aggiornarla ad AES dipende dal numero di oggetti protetti dalla DMK. È necessario rigenerare la chiave DMK per l'aggiornamento ad AES una sola volta e l'operazione non influenza le rigenerazioni future che fanno parte di una strategia di rotazione della chiave.
Osservazioni:
Durante un ripristino offline, se il database specificato è in uso, l'istruzione RESTORE comporta la disconnessione degli utenti dopo un breve intervallo. Per il ripristino online di un filegroup non primario, il database può rimanere in uso a meno che il filegroup da ripristinare non venga portato offline. Tutti i dati del database specificato vengono sostituiti dai dati ripristinati.
È possibile eseguire operazioni di ripristino tra piattaforme diverse, e anche tra tipi di processore diversi, a condizione che il sistema operativo supporti le regole di confronto del database.
È possibile riavviare un'operazione RESTORE dopo un errore. È anche possibile impostare l'istruzione RESTORE per continuare le operazioni anche in caso di errori e in questo caso viene eseguito il ripristino di tutti i dati possibili (vedere l'opzione CONTINUE_AFTER_ERROR
).
Non è possibile utilizzare RESTORE in una transazione esplicita o implicita.
Il ripristino di un database danneggiato master
viene eseguito utilizzando una procedura speciale. Per altre informazioni, vedere Backup e ripristino di database di sistema.
Il ripristino di un database comporta la cancellazione della cache dei piani relativa al database ripristinato. La cancellazione della cache dei piani comporta la ricompilazione di tutti i piani di esecuzione successivi e può causare un peggioramento improvviso e temporaneo delle prestazioni di esecuzione delle query.
Per ripristinare un database di disponibilità, ripristinare innanzitutto il database in base all'istanza di SQL Server, quindi aggiungerlo al gruppo di disponibilità.
Accelerazione e offload integrati per la compressione e la decompressione dei backup
SQL Server 2022 (16.x) introduce ALGORITHM
, che identifica un algoritmo di compressione per l'operazione. Per altre informazioni, vedere Compressione backup.
Per altre informazioni, vedere Operazioni di ripristino
Ripristino da un URL
URL è il formato usato per specificare il percorso e il nome file per Archiviazione BLOB di Microsoft Azure o la risorsa di archiviazione di oggetti compatibile con S3. Anche se Archiviazione BLOB di Azure è un servizio, l'implementazione è simile a quella per dischi e nastri, in modo da consentire un'esperienza di ripristino coerente e trasparente per tutti i dispositivi.
Per altre informazioni sul ripristino da Archiviazione BLOB di Microsoft Azure, vedere Backup e ripristino di SQL Server con Archiviazione BLOB di Microsoft Azure.
Il backup e il ripristino nell'archivio oggetti compatibile con S3 è stato introdotto in SQL Server 2022 (16.x). Per altre informazioni sul ripristino dall'archiviazione oggetti compatibile con S3, vedere Backup e ripristino di SQL Server con archiviazione oggetti compatibile con S3. Esaminare anche l'opzione per il backup di SQL Server nell'URL per l'archiviazione di oggetti compatibile con S3.
Interoperabilità
Impostazioni e ripristino del database
Durante il ripristino, la maggior parte delle opzioni del database che possono essere impostate con ALTER DATABASE viene reimpostata sui valori attivi alla fine del backup.
Se si utilizza l'opzione WITH RESTRICTED_USER, tuttavia, questo comportamento viene ignorato per l'impostazione dell'opzione di accesso dell'utente. Questa opzione viene sempre impostata dopo l'esecuzione di un'istruzione RESTORE in cui è inclusa l'opzione WITH RESTRICTED_USER.
Ripristinare un database crittografato
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 altre informazioni, vedere SQL Server Certificates and Asymmetric Keys.
Ripristinare un database abilitato per l'archiviazione vardecimal
Il backup e il ripristino funzionano correttamente con il formato di archiviazione vardecimal. Per altre informazioni sul formato di archiviazione vardecimal, vedere sp_db_vardecimal_storage_forma.
Ripristinare i dati full-text
I dati full-text vengono ripristinati insieme agli altri dati del database durante un ripristino completo. Con la normale sintassi RESTORE DATABASE database_name FROM backup_device
, i file full-text vengono ripristinati nell'ambito del ripristino dei file del database.
L'istruzione RESTORE consente inoltre di eseguire ripristini in posizioni alternative, ripristini differenziali, ripristini di file e filegroup, nonché ripristini differenziali di file e filegroup di dati full-text. È inoltre possibile utilizzare l'istruzione RESTORE per ripristinare solo i file full-text, come nel caso dei dati di database.
Nota
I cataloghi full-text importati da SQL Server 2005 (9.x) vengono ancora gestiti come file di database. Per tali file, la procedura di SQL Server 2005 (9.x) per l'esecuzione del backup dei cataloghi full-text rimane applicabile, a meno che la sospensione e la ripresa durante l'operazione di backup non siano più necessarie. Per altre informazioni, vedere Backup e ripristino di cataloghi full-text.
Eseguire il ripristino in SQL Server 2022 e la funzionalità di rilascio automatico
Quando si ripristina un database in SQL Server 2022 (16.x) da una versione precedente, è consigliabile eseguire sp_updatestats
nel database, impostando i metadati appropriati alla funzionalità di eliminazione automatica delle statistiche. Per altre informazioni, vedere Opzione di rilascio automatico delle statistiche.
Cluster Big Data di SQL Server
Alcune operazioni, inclusa la configurazione delle impostazioni del server (livello di istanza) o l'aggiunta manuale di un database a un gruppo di disponibilità, richiedono una connessione all'istanza di SQL Server. Per operazioni come sp_configure
, RESTORE DATABASE
o per qualsiasi comando DDL in un database appartenente a un gruppo di disponibilità è necessaria una connessione all'istanza di SQL Server. Per impostazione predefinita, un cluster Big Data non include un endpoint che abilita una connessione all'istanza. È necessario esporre questo endpoint manualmente.
Per istruzioni, vedere Connessione ai database nella replica primaria.
Metadati UFX
In SQL Server sono incluse tabelle cronologiche per backup e ripristini in cui viene tenuta traccia dell'attività di backup e ripristino per ogni istanza del server. Quando si effettua un'operazione di ripristino, vengono modificate anche le tabelle di cronologia di backup. Per informazioni su queste tabelle, vedere Informazioni sulla cronologia e sull'intestazione del backup.
Impatto dell'opzione REPLACE
L'opzione REPLACE deve essere utilizzata raramente e solo dopo un'attenta valutazione. In genere, il ripristino impedisce la sovrascrittura accidentale di un database con un altro. Se il database specificato in un'istruzione RESTORE esiste già nel server corrente e il GUID del gruppo di database specificato è diverso da quello registrato nel set di backup, il database non verrà ripristinato. Questa misura di sicurezza è importante.
L'opzione REPLACE ignora diversi controlli di sicurezza importanti, eseguiti generalmente durante il ripristino. I controlli ignorati riguardano le operazioni seguenti:
Ripristino di un database esistente con un backup di un altro database
Con l'opzione REPLACE, il ripristino consente di sovrascrivere un database esistente con qualsiasi database incluso nel set di backup, anche se il nome del database specificato è diverso da quello registrato nel set di backup. Questa operazione può causare la sovrascrittura accidentale di un database con un altro.
Ripristino di un database mediante il modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk in cui manca il backup della parte finale del log e non viene usata l'opzione
STOPAT
.Con l'opzione REPLACE, è possibile perdere le transazioni di cui è stato eseguito il commit, in quanto non viene eseguito il backup del log in cui sono stati registrati i dati più recenti.
Sovrascrittura di file esistenti
In seguito a un errore, ad esempio, potrebbe essere consentita la sovrascrittura di file esistenti di tipo non corretto, ad esempio con estensione xls, o utilizzati da un altro database che non è online. Se i file vengono sovrascritti, può verificarsi la perdita di dati arbitrari, anche se il database ripristinato è completo.
Ripetere un ripristino
Non è possibile annullare gli effetti di un ripristino. È tuttavia possibile annullare gli effetti della copia e del rollforward dei dati rieseguendo l'operazione file per file. Per ricominciare, ripristinare il file desiderato ed eseguire nuovamente il rollforward. Se, ad esempio, vengono ripristinati per errore troppi backup del log superando il punto previsto per l'interruzione del ripristino, è necessario riavviare la sequenza.
È possibile interrompere e riavviare una sequenza di ripristino tramite il ripristino dell'intero contenuto dei file interessati.
Ripristinare uno snapshot del database
L'operazione di ripristino del database (specificata con l'opzione DATABASE_SNAPSHOT) consente di portare un database di origine completo in un momento anteriore nel tempo tramite il ripristino del momento di uno snapshot del database, ovvero sovrascrivendo il database di origine con i dati di quel momento presenti nello snapshot specificato del database. Al momento del ripristino, può esistere solo lo snapshot da ripristinare. L'operazione include la ricompilazione del log, pertanto non è possibile eseguire successivamente il roll forward di un database così ripristinato fino al punto di un errore utente specifico.
La perdita di dati è limitata agli aggiornamenti del database eseguiti dopo la creazione dello snapshot. I metadati di un database così ripristinato corrispondono a quelli esistenti al momento della creazione dello snapshot. Il ripristino a uno snapshot causa tuttavia l'eliminazione di tutti i cataloghi full-text.
Il ripristino da uno snapshot del database non è adatto per il recupero di supporti. A differenza di un normale set di backup, lo snapshot del database è una copia incompleta dei file del database. Se il database o lo snapshot del database è danneggiato, è improbabile che sia possibile eseguire il ripristino da uno snapshot. Anche quando possibile, è inoltre improbabile che il ripristino in caso di danneggiamento consenta di risolvere il problema.
Restrizioni per il ripristino da snapshot
Il ripristino da snapshot non è supportato nei casi seguenti:
- Il database di origine contiene filegroup di sola lettura o compressi.
- Alcuni file online al momento della creazione dello snapshot sono offline.
- Sono disponibili più snapshot del database.
Per altre informazioni, vedere Ripristinare un database a uno snapshot del database.
Sicurezza
Per un'operazione di backup è possibile specificare password per un set di supporti o un set di backup oppure per entrambi. Se è stata impostata una password per un set di supporti o un set di backup, la password o le password corrette devono essere specificate nell'istruzione RESTORE. Queste password impediscono operazioni di ripristino non autorizzate e l'aggiunta non autorizzata di set di backup ai supporti tramite gli strumenti di SQL Server. I supporti protetti con password possono tuttavia essere sovrascritti con l'opzione FORMAT dell'istruzione BACKUP.
Importante
Il livello di protezione garantito da questa password è vulnerabile. Lo scopo è impedire un ripristino non corretto da parte di utenti autorizzati o non autorizzati mediante gli strumenti di SQL Server. Non impedisce la lettura dei dati di backup eseguita con altri mezzi o la sostituzione della password. Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Per ottenere un livello di protezione adeguato dei backup è consigliabile archiviare i nastri di backup in un luogo sicuro oppure eseguire il backup in file su disco protetti da elenchi di controllo di accesso (ACL) appropriati. Gli elenchi di controllo di accesso devono essere impostati a livello della directory radice in cui vengono creati i backup.
Per informazioni specifiche sul backup e sul ripristino di SQL Server con il servizio di archiviazione BLOB di Microsoft Azure, vedere Backup e ripristino di SQL Server con Archiviazione BLOB di Microsoft Azure.
Il backup e il ripristino nell'archivio oggetti compatibile con S3 è stato introdotto in SQL Server 2022 (16.x). Per altre informazioni sul ripristino dall'archiviazione oggetti compatibile con S3, vedere Backup e ripristino di SQL Server con archiviazione oggetti compatibile con S3. Esaminare anche l'opzione per il backup di SQL Server nell'URL per l'archiviazione di oggetti compatibile con S3.
Autorizzazioni
Se il database da ripristinare non esiste, l'utente deve avere le autorizzazioni CREATE DATABASE
per eseguire un'istruzione 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. Per l'opzione FROM DATABASE_SNAPSHOT
, il database esiste sempre.
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.
Esempi
In tutti gli esempi si presuppone che sia stato eseguito un backup completo del database.
Sono disponibili gli esempi seguenti per l'istruzione RESTORE:
- R. Ripristino di un database completo
- B. Ripristino di backup completi e differenziali del database
- C. Ripristino di un database con la sintassi RESTART
- D. Ripristino di un database e spostamento dei file
- E. Copia di un database tramite BACKUP e RESTORE
- F. Ripristino temporizzato tramite STOPAT
- G. Ripristino del log delle transazioni fino a un contrassegno
- H. Ripristino con la sintassi TAPE
- I. Ripristino con la sintassi FILE e FILEGROUP
- J. Ripristino da uno snapshot del database
- K. Ripristino da Archiviazione BLOB di Microsoft Azure
- .L Eseguire il ripristino da un backup di snapshot
Nota
Per altri esempi, vedere gli argomenti relativi alle procedure di ripristino elencati in Panoramica del ripristino e del recupero.
R. Ripristinare un database completo
Nell'esempio seguente viene ripristinato un backup completo del database dal dispositivo di backup logico AdventureWorksBackups
. Per un esempio della creazione di questo dispositivo, vedere Dispositivi di backup.
RESTORE DATABASE AdventureWorks2022
FROM AdventureWorks2022Backups;
Nota
Per un database impostato per l'uso del modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk, in SQL Server nella maggior parte dei casi è necessario eseguire il backup della parte finale del log prima di ripristinare il database. Per altre informazioni, vedere Backup della parte finale del log.
B. Ripristinare backup completi e differenziali del database
Nell'esempio seguente viene ripristinato un backup completo del database seguito da un backup differenziale dal dispositivo di backup Z:\SQLServerBackups\AdventureWorks2022.bak
, in cui sono entrambi contenuti. Il backup completo del database da ripristinare rappresenta il sesto set di backup nel dispositivo (FILE = 6
), mentre il backup differenziale del database rappresenta il nono set di backup nel dispositivo (FILE = 9
). Il database viene recuperato al termine del recupero del backup differenziale.
RESTORE DATABASE AdventureWorks2022
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2022.bak'
WITH FILE = 6,
NORECOVERY;
RESTORE DATABASE AdventureWorks2022
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2022.bak'
WITH FILE = 9,
RECOVERY;
C. Ripristinare un database usando la sintassi RESTART
Nell'esempio seguente viene utilizzata l'opzione RESTART
per riavviare un'operazione RESTORE
interrotta a causa di un'interruzione dell'alimentazione del server.
-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE AdventureWorks2022
FROM AdventureWorksBackups;
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE AdventureWorks2022
FROM AdventureWorksBackups WITH RESTART;
D. Ripristinare un database e spostare i file
Nell'esempio seguente vengono ripristinati un database completo e il log delle transazioni. Il database ripristinato viene quindi spostato nella directory C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data
.
RESTORE DATABASE AdventureWorks2022
FROM AdventureWorksBackups
WITH NORECOVERY,
MOVE 'AdventureWorks2022_Data' TO
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf',
MOVE 'AdventureWorks2022_Log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';
RESTORE LOG AdventureWorks2022
FROM AdventureWorksBackups
WITH RECOVERY;
E. Copiare un database usando BACKUP e RESTORE
Nell'esempio seguente vengono utilizzate le istruzioni BACKUP
e RESTORE
per creare una copia del database AdventureWorks2022
. L'istruzione MOVE
consente di ripristinare i file di dati e di log nelle posizioni specificate. L'istruzione RESTORE FILELISTONLY
viene utilizzata per determinare il numero e i nomi dei file del database da ripristinare. Alla nuova copia del database viene assegnato il nome TestDB
. Per altre informazioni, vedere RESTORE FILELISTONLY.
BACKUP DATABASE AdventureWorks2022
TO AdventureWorksBackups ;
RESTORE FILELISTONLY
FROM AdventureWorksBackups ;
RESTORE DATABASE TestDB
FROM AdventureWorksBackups
WITH MOVE 'AdventureWorks2022_Data' TO 'C:\MySQLServer\testdb.mdf',
MOVE 'AdventureWorks2022_Log' TO 'C:\MySQLServer\testdb.ldf';
GO
F. Ripristino temporizzato tramite STOPAT
Nell'esempio seguente viene ripristinato lo stato del database corrispondente alle ore 12:00 AM
del giorno April 15, 2020
e viene illustrata un'operazione di ripristino di più backup del log. Nel dispositivo di backup, AdventureWorksBackups
, il backup completo del database da ripristinare è il terzo set di backup (FILE = 3
), il primo backup del log è il quarto set di backup (FILE = 4
) e il secondo backup del log è il quinto set di backup (FILE = 5
).
RESTORE DATABASE AdventureWorks2022
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
RESTORE LOG AdventureWorks2022
FROM AdventureWorksBackups
WITH FILE = 4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE LOG AdventureWorks2022
FROM AdventureWorksBackups
WITH FILE = 5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2022 WITH RECOVERY;
G. Ripristinare il log delle transazioni in un contrassegno
Nell'esempio seguente viene ripristinato il log delle transazioni fino al contrassegno nella transazione contrassegnata denominata ListPriceUpdate
.
USE AdventureWorks2022;
GO
BEGIN TRANSACTION ListPriceUpdate
WITH MARK 'UPDATE Product list prices';
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 1.10
WHERE ProductNumber LIKE 'BK-%';
GO
COMMIT TRANSACTION ListPriceUpdate;
GO
-- Time passes. Regular database
-- and log backups are taken.
-- An error occurs in the database.
USE master;
GO
RESTORE DATABASE AdventureWorks2022
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO
RESTORE LOG AdventureWorks2022
FROM AdventureWorksBackups
WITH FILE = 4,
RECOVERY,
STOPATMARK = 'UPDATE Product list prices';
H. Eseguire il ripristino con la sintassi TAPE
Nell'esempio seguente viene ripristinato un backup completo del database da un dispositivo di backup di tipo TAPE
.
RESTORE DATABASE AdventureWorks2022
FROM TAPE = '\\.\tape0';
I. Eseguire il ripristino con la sintassi FILE e FILEGROUP
Nell'esempio seguente viene ripristinato un database denominato MyDatabase
che include due file, un filegroup secondario e un log delle transazioni. Per il database viene utilizzato il modello di recupero con registrazione completa.
Il backup del database è il nono set di backup nel set di supporti in un dispositivo di backup logico denominato MyDatabaseBackups
. Vengono quindi ripristinati tre backup del log, disponibili nei tre set di backup successivi (10
, 11
e 12
) nel dispositivo MyDatabaseBackups
, utilizzando WITH NORECOVERY
. Dopo il ripristino dell'ultimo backup del log con NORECOVERY
, il database viene ripristinato.
Nota
Il recupero viene eseguito come passaggio distinto per ridurre la possibilità che questa operazione venga eseguita troppo presto, ovvero prima del ripristino di tutti i backup del log. Per altre informazioni sul processo di recupero, vedere Panoramica del ripristino e del recupero (SQL Server).
Si noti che in RESTORE DATABASE
sono disponibili due tipi di opzioni FILE
. Le opzioni FILE
che precedono il nome del dispositivo di backup specificano i nomi di file logici dei file di database da ripristinare dal set di backup, ad esempio FILE = 'MyDatabase_data_1'
. Questo set di backup non è il primo backup del database nel set di supporti. La relativa posizione nel set di supporti viene pertanto indicata tramite l'opzione FILE
nella clausola WITH
, FILE = 9
.
RESTORE DATABASE MyDatabase
FILE = 'MyDatabase_data_1',
FILE = 'MyDatabase_data_2',
FILEGROUP = 'new_customers'
FROM MyDatabaseBackups
WITH
FILE = 9,
NORECOVERY;
GO
-- Restore the log backups
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 10,
NORECOVERY;
GO
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 11,
NORECOVERY;
GO
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 12,
NORECOVERY;
GO
--Recover the database
RESTORE DATABASE MyDatabase WITH RECOVERY;
GO
J. Eseguire il ripristino da uno snapshot del database
Nell'esempio seguente viene eseguito il ripristino di un database con uno snapshot del database. Nell'esempio si presuppone che per il database esista un solo snapshot. Per un esempio di come creare lo snapshot di questo database, vedere Creare uno snapshot del database.
Nota
Il ripristino da uno snapshot causa l'eliminazione di tutti i cataloghi full-text.
USE master;
RESTORE DATABASE AdventureWorks2022 FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
Per altre informazioni, vedere Ripristinare un database a uno snapshot del database.
K. Eseguire il ripristino dall'archivio BLOB di Microsoft Azure
I tre esempi seguenti prevedono l'uso del servizio di archiviazione di Microsoft Azure. Il nome dell'account di archiviazione è mystorageaccount
, mentre Il contenitore per i file di dati è denominato myfirstcontainer
. Il contenitore per i file di backup è denominato mysecondcontainer
. Sono stati creati criteri di accesso archiviati con diritti di lettura, scrittura, eliminazione ed elenco per ogni contenitore. Le credenziali di SQL Server sono state create usando una firma di accesso condiviso associata ai criteri di accesso archiviati. Per informazioni specifiche sul backup e sul ripristino di SQL Server con il servizio di archiviazione BLOB di Microsoft Azure, vedere Backup e ripristino di SQL Server con Archiviazione BLOB di Microsoft Azure.
K1. Ripristinare un backup completo del database dal servizio di archiviazione di Microsoft Azure
Un backup completo, disponibile in mysecondcontainer
, del database Sales
verrà ripristinato in myfirstcontainer
. Sales
attualmente non esiste nel server.
RESTORE DATABASE Sales
FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/Sales.bak'
WITH MOVE 'Sales_Data1' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_Data1.mdf',
MOVE 'Sales_log' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_log.ldf',
STATS = 10;
K2. Ripristinare un backup completo del database dal servizio di archiviazione di Microsoft Azure in una risorsa di archiviazione locale
Un backup completo, disponibile in mysecondcontainer
, del database Sales
verrà ripristinato in una risorsa di archiviazione locale. Sales
attualmente non esiste nel server.
RESTORE DATABASE Sales
FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/Sales.bak'
WITH MOVE 'Sales_Data1' to 'H:\DATA\Sales_Data1.mdf',
MOVE 'Sales_log' to 'O:\LOG\Sales_log.ldf',
STATS = 10;
K3. Ripristinare un backup completo del database da una risorsa di archiviazione locale al servizio di archiviazione di Microsoft Azure
RESTORE DATABASE Sales
FROM DISK = 'E:\BAK\Sales.bak'
WITH MOVE 'Sales_Data1' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_Data1.mdf',
MOVE 'Sales_log' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_log.ldf',
STATS = 10;
.L Eseguire il ripristino dal backup dello snapshot
Introdotto in SQL Server 2022 (16.x) Per altre informazioni, vedere Creare un backup snapshot Transact-SQL.
L1. Ripristinare un backup completo
RESTORE DATABASE Sales
FROM DISK = 'D:\MSSQL\Backup\SalesSnapshotFull.bkm'
WITH METADATA_ONLY;
L2. Ripristinare un backup e applicare un log delle transazioni
RESTORE DATABASE Sales
FROM DISK = 'D:\MSSQL\Backup\SalesSnapshotFull.bkm'
WITH METADATA_ONLY,
NORECOVERY;
RESTORE LOG Sales
FROM DISK = 'D:\MSSQL\Backup\SalesLog.trn'
WITH RECOVERY;
L3. Eseguire il ripristino da un backup di snapshot e posizionare i file di database e di log in un nuovo percorso
RESTORE DATABASE Sales
FROM DISK = 'D:\MSSQL\Backup\SalesSnapshotFull.bkm'
WITH METADATA_ONLY,
MOVE Sales_Data TO 'D:\MSSQL\Sales.mdf',
MOVE Sales_Log TO 'D:\MSSQL\Sales_log.ldf';
Passaggi successivi
- Panoramica del ripristino e del recupero (SQL Server)
- Backup e ripristino di database SQL Server
- Backup e ripristino di database di sistema (SQL Server)
- Ripristinare un backup del database con SSMS
- Backup e ripristino di indici e cataloghi full-text
- Backup e ripristino di database replicati
- BACKUP
- Set di supporti, gruppi di supporti e set di backup
- RESTORE REWINDONLY
- RESTORE VERIFYONLY
- RESTORE FILELISTONLY (Transact-SQL)
- RESTORE HEADERONLY (Transact-SQL)
- Informazioni sulla cronologia e sull'intestazione del backup
* Istanza gestita di SQL *
Istanza gestita di SQL di Azure
Questo comando consente di ripristinare un intero database da un backup completo del database (ripristino completo) dall'account di archiviazione BLOB di Azure.
Per informazioni sugli altri comandi RESTORE supportati, vedere:
- RESTORE FILELISTONLY (Transact-SQL)
- RESTORE HEADERONLY (Transact-SQL)
- RESTORE LABELONLY ONLY (Transact-SQL)
- RESTORE VERIFYONLY (Transact-SQL)
Importante
Per eseguire il ripristino dai backup automatici di Istanza gestita di SQL di Azure, vedere Ripristino del database SQL.
Sintassi
--To Restore an Entire Database from a Full database backup (a Complete Restore):
RESTORE DATABASE { database_name | @database_name_var }
FROM URL = { 'physical_device_name' | @physical_device_name_var } [ ,...n ]
[;]
Argomenti
DATABASE
Specifica il database di destinazione.
FROM URL
Specifica uno o più dispositivi di backup inseriti sugli URL che verranno usati per l'operazione di ripristino. Il formato URL viene usato per il ripristino dei backup dal servizio di archiviazione di Microsoft Azure.
Importante
Per eseguire il ripristino da più dispositivi durante il ripristino da URL, è necessario usare token di firma di accesso condiviso (SAS). Per esempi di creazione di una firma di accesso condiviso, vedere Backup di SQL Server nell'URL e Simplifying creation of SQL Credentials with Shared Access Signature (SAS) tokens on Azure Storage with Powershell (Semplificazione della creazione di credenziali SQL con token di firma di accesso condiviso (SAS) in Archiviazione di Azure con Powershell).
n è un segnaposto che indica che è possibile specificare fino a 64 dispositivi di backup in un elenco delimitato da virgole.
Osservazioni:
Come prerequisito, è necessario creare una credenziale con il nome corrispondente all'URL dell'account di archiviazione BLOB e la firma di accesso condiviso inserita come segreto. Il comando RESTORE cercherà le credenziali usando l'URL di archiviazione BLOB per trovare le informazioni necessarie per leggere il dispositivo di backup.
L'operazione di ripristino è asincrona, vale a dire che il ripristino continua anche se la connessione client si interrompe. Se la connessione è interrotta, è possibile controllare nella visualizzazione sys.dm_operation_status lo stato di un'operazione di ripristino (e lo stato di CREATE e DROP DATABASE).
Le seguenti opzioni di database sono impostate/sottoposte a override e non possono essere modificate in un secondo momento:
- NEW_BROKER (se il broker non è abilitato nel file con estensione bak)
- ENABLE_BROKER (se il broker non è abilitato nel file con estensione bak)
- AUTO_CLOSE=OFF (se un database nel file con estensione bak ha l'impostazione AUTO_CLOSE=ON)
- RECOVERY FULL (se un database nel file .bak ha un modello di recupero SIMPLE o BULK_LOGGED)
- Il filegroup con ottimizzazione per la memoria viene aggiunto e denominato XTP se non era presente nel file con estensione bak di origine. Qualsiasi filegroup con ottimizzazione per la memoria esistente viene rinominato come XTP
- Le opzioni SINGLE_USER e RESTRICTED_USER vengono convertite in MULTI_USER
Limitazioni - Istanza gestita di SQL
Si applicano le seguenti limitazioni:
- I file con estensione bak contenenti più set di backup non possono essere ripristinati.
- I file con estensione bak contenenti più file di log non possono essere ripristinati.
- Il ripristino non riesce se il file con estensione bak contiene dati FILESTREAM.
- Non è possibile ripristinare i backup contenenti database con oggetti in memoria attivi in un livello di prestazioni Utilizzo generico.
- Attualmente non è possibile ripristinare i backup contenenti database in modalità di sola lettura.
Per altre informazioni, vedere Istanza gestita di SQL di Azure.
Ripristinare un database crittografato
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 altre informazioni, vedere SQL Server Certificates and Asymmetric Keys.
Autorizzazioni
Per eseguire l'istruzione RESTORE, l'utente deve avere le autorizzazioni CREATE DATABASE
.
CREATE LOGIN mylogin WITH PASSWORD = 'Very Strong Pwd123!';
GRANT CREATE ANY DATABASE TO [mylogin];
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.
Esempi
L'esempio seguente ripristina un backup di database di sola copia da URL, inclusa la creazione di una credenziale.
R. Ripristinare il database da quattro dispositivi di backup
-- Create credential
CREATE CREDENTIAL [https://mybackups.blob.core.windows.net/wide-world-importers]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=2017-11-09&ss=bq&srt=sco&sp=rl&se=2022-06-19T22:41:07Z&st=2018-06-01T14:41:07Z&spr=https&sig=s7wddcf0w%3D';
GO
-- Restore database
RESTORE DATABASE WideWorldImportersStandard
FROM URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/00-WideWorldImporters-Standard.bak',
URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/01-WideWorldImporters-Standard.bak',
URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/02-WideWorldImporters-Standard.bak',
URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/03-WideWorldImporters-Standard.bak'
Se il database esiste già, viene visualizzato l'errore seguente: Msg 1801, Level 16, State 1, Line 9 Database 'WideWorldImportersStandard' already exists. Choose a different database name.
B. Ripristinare il database specificato tramite la variabile
DECLARE @db_name sysname = 'WideWorldImportersStandard';
DECLARE @url nvarchar(400) = N'https://mybackups.blob.core.windows.net/wide-world-importers/WideWorldImporters-Standard.bak';
RESTORE DATABASE @db_name
FROM URL = @url
C. Tenere traccia dello stato dell'istruzione RESTORE
SELECT query = a.text, start_time, percent_complete,
eta = dateadd(second,estimated_completion_time/1000, getdate())
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a
WHERE r.command = 'RESTORE DATABASE'
Nota
In questa visualizzazione verranno probabilmente mostrate due richieste di ripristino. Una è l'istruzione RESTORE originale inviata dal client e l'altra è l'istruzione RESTORE in background eseguita anche se la connessione client non riesce.
* Piattaforma di strumenti
analitici (PDW) *
Sistema della piattaforma di analisi
Esegue il ripristino di un database utente della piattaforma di strumenti analitici (PDW) da un backup del database in un'appliance PDW. Il database viene ripristinato da un backup creato in precedenza dal comando BACKUP DATABASE - Analytics Platform System della piattaforma di strumenti analitici (PDW). Usare le operazioni di backup e ripristino per creare un piano di ripristino di emergenza o per spostare i database da un'appliance a un'altra.
Nota
Il ripristino del database di sistema master
include il ripristino delle informazioni di accesso dell'appliance. Per ripristinare il database master
, usare la pagina Ripristinare il database master nello strumento Configuration Manager. Questa operazione può essere eseguita da un amministratore con accesso al nodo di controllo. Per altre informazioni sui backup del database della piattaforma di strumenti analitici (PDW), vedere "Backup and ripristino" nella documentazione del prodotto piattaforma di strumenti analitici (PDW).
Sintassi
-- Restore the master database
-- Use the Configuration Manager tool.
Restore a full user database backup.
RESTORE DATABASE database_name
FROM DISK = '\\UNC_path\full_backup_directory'
[;]
--Restore a full user database backup and then a differential backup.
RESTORE DATABASE database_name
FROM DISK = '\\UNC_path\differential_backup_directory'
WITH [ ( ] BASE = '\\UNC_path\full_backup_directory' [ ) ]
[;]
--Restore header information for a full or differential user database backup.
RESTORE HEADERONLY
FROM DISK = '\\UNC_path\backup_directory'
[;]
Argomenti
RESTORE DATABASE database_name
Specifica il ripristino di un database utente in un database denominato database_name. Il database ripristinato può avere un nome diverso da quello del database di origine di cui è stato eseguito il backup. database_name non può esistere già come database nell'appliance di destinazione. Per altre informazioni sui nomi di database consentiti, vedere le sezioni relative alle regole di denominazione nella documentazione del prodotto piattaforma di strumenti analitici (PDW).
Il ripristino di un database utente implica il ripristino di un backup completo del database e, facoltativamente, di un backup differenziale nell'appliance. Il ripristino di un database utente include il ripristino degli utenti e dei ruoli del database.
FROM DISK = '\\UNC_path\backup_directory'
Il percorso di rete e la directory da cui la piattaforma di strumenti analitici (PDW) ripristina i file di backup. Ad esempio, FROM DISK = '\\xxx.xxx.xxx.xxx\backups\2012\Monthly\08.2012.Mybackup'.
backup_directory specifica il nome della directory che contiene il backup completo o differenziale. È ad esempio possibile eseguire un'operazione RESTORE HEADERONLY per un backup completo o differenziale.
full_backup_directory specifica il nome della directory che contiene il backup completo.
differential_backup_directory specifica il nome della directory che contiene il backup differenziale.
- Il percorso e la directory di backup devono essere già esistenti e devono essere specificati sotto forma di percorso UNC completo.
- Il percorso della directory di backup non può essere un percorso locale e non può essere il percorso di uno dei nodi dell'appliance della piattaforma di strumenti analitici (PDW).
- La lunghezza massima del percorso UNC e del nome della directory di backup è di 200 caratteri.
- Il server o l'host deve essere specificato come indirizzo IP.
RESTORE HEADERONLY
Specifica la restituzione sollo delle informazioni di intestazione per un backup del database utente. Tra gli altri campi, l'intestazione include la descrizione in formato testo del backup e il nome del backup stesso. Il nome del backup non deve necessariamente corrispondere al nome della directory in cui sono archiviati i file di backup.
I risultati di RESTORE HEADERONLY seguono il modello dei risultati di RESTORE HEADERONLY di SQL Server. Il risultato ha più di 50 colonne, che non vengono usate tutte dalla piattaforma di strumenti analitici (PDW). Per una descrizione delle colonne nei risultati di RESTORE HEADERONLY di SQL Server, vedere RESTORE HEADERONLY.
Autorizzazioni
È necessaria l'autorizzazione CREATE ANY DATABASE
.
È necessario un account di Windows con l'autorizzazione di accesso e lettura per la directory di backup. È anche necessario archiviare il nome e la password dell'account di Windows nella piattaforma di strumenti analitici (PWD).
- Per verificare le credenziali già presenti, usare sys.dm_pdw_network_credentials.
- Per aggiungere credenziali o aggiornare quelle esistenti, usare sp_pdw_add_network_credentials - Azure Synapse Analytics.
- Per rimuovere le credenziali dalla piattaforma di strumenti analitici (PDW), usare sp_pdw_remove_network_credentials - Azure Synapse Analytics.
Gestione errori
Il comando RESTORE DATABASE genera errori nelle condizioni seguenti:
- Il nome del database da ripristinare esiste già nell'appliance di destinazione. Per evitare questo problema, scegliere un nome di database univoco oppure rilasciare il database esistente prima di eseguire il ripristino.
- Nella directory di backup è presente un set di file di backup non valido.
- Le autorizzazioni di accesso non sono sufficienti per il ripristino di un database.
- La piattaforma di strumenti analitici (PDW) non ha le autorizzazioni corrette per il percorso di rete in cui si trovano i file di backup.
- Il percorso di rete della directory di backup non esiste o non è disponibile.
- Lo spazio su disco è insufficiente nei nodi di calcolo o nel nodo di controllo. La piattaforma di strumenti analitici (PDW) non conferma la disponibilità di spazio su disco sufficiente nell'appliance prima dell'avvio del ripristino. È quindi possibile che venga generato un errore di spazio su disco insufficiente durante l'esecuzione dell'istruzione RESTORE DATABASE. Quando lo spazio su disco è insufficiente, la piattaforma di strumenti analitici (PDW) esegue il rollback del ripristino.
- L'appliance di destinazione in cui il database è in corso di ripristino ha un numero di nodi di calcolo inferiore a quello dell'appliance di origine da cui è stato eseguito il backup del database.
- Viene tentato il ripristino del database dall'interno di una transazione.
Osservazioni:
La piattaforma di strumenti analitici (PDW) tiene traccia dell'esito positivo del ripristino dei database. Prima di ripristinare un backup differenziale del database, la piattaforma di strumenti analitici (PDW) verifica che il ripristino completo del database sia stato completato.
Dopo un ripristino, il database utente ha un livello di compatibilità pari a 120. Questo vale per tutti i database, indipendentemente dal livello di compatibilità originale.
Eseguire il ripristino in un'appliance con un numero maggiore di nodi di calcolo
Eseguire DBCC SHRINKLOG (Azure Synapse Analytics) dopo il ripristino di un database da un'appliance più piccola a una più grande, poiché la ridistribuzione aumenta le dimensioni del log delle transazioni.
Il ripristino di un backup in un'appliance con un numero maggiore di nodi di calcolo aumenta la dimensione allocata al database proporzionalmente al numero di nodi di calcolo.
Se ad esempio si ripristina un database da 60 GB da un'appliance da 2 nodi (30 GB per nodo) in un'appliance da 6 nodi, la piattaforma di strumenti analitici (PDW) crea un database di 180 GB (6 nodi con 30 GB per nodo) nell'appliance da 6 nodi. La piattaforma di strumenti analitici (PDW) inizialmente ripristina il database in 2 nodi, in modo che corrisponda alla configurazione dell'origine, e quindi ridistribuisce i dati in tutti i 6 nodi.
Dopo la ridistribuzione, ogni nodo di calcolo contiene meno dati effettivi e più spazio disponibile rispetto a ogni nodo di calcolo nell'appliance di origine di dimensioni inferiori. Usare lo spazio aggiuntivo per l'aggiunta di altri dati al database. Se le dimensioni del database ripristinato sono maggiori del necessario, è possibile usare ALTER DATABASE - PDW per compattare le dimensioni dei file del database stesso.
Limitazioni e restrizioni
In questa sezione, per appliance di origine si intende l'appliance da cui è stato creato il backup del database e per appliance di destinazione si intende l'appliance in cui viene ripristinato il database.
- Il ripristino di un database non implica la rigenerazione automatica delle statistiche.
- In qualsiasi momento, nell'appliance può essere in esecuzione una sola istruzione RESTORE DATABASE o BACKUP DATABASE. Se vengono inviate contemporaneamente più istruzioni di backup e ripristino, l'appliance le inserisce in una coda e le elabora una alla volta.
- È possibile ripristinare un backup del database solo in un'appliance di destinazione della piattaforma di strumenti analitici (PDW) con un numero di nodi di calcolo uguale o maggiore a quello dell'appliance di origine. L'appliance di destinazione non può avere un numero di nodi di calcolo minore dell'appliance di origine.
- Non è possibile ripristinare un backup creato in un'appliance con hardware SQL Server 2012 PDW in un'appliance con hardware SQL Server 2008 R2. Ciò vale anche se l'appliance è stata originariamente acquistata con hardware SQL Server 2008 R2 PDW e ora esegue software SQL Server 2012 PDW.
Blocco
Acquisisce un blocco esclusivo per l'oggetto DATABASE.
Esempi
R. Esempi di RESTORE semplici
L'esempio seguente ripristina un backup completo nel database SalesInvoices2013
. I file di backup vengono archiviati nella directory \\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full
. Nell'appliance di destinazione non può essere già presente un database SalesInvoices2013
. In caso contrario, questo comando avrà esito negativo e genererà un errore.
RESTORE DATABASE SalesInvoices2013
FROM DISK = '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full';
B. Ripristinare un backup completo e un backup differenziale
L'esempio seguente ripristina un backup completo e quindi un backup differenziale nel database SalesInvoices2013
Il backup completo del database viene ripristinato usando il backup completo archiviato nella directory \\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full
. Se il ripristino viene completato correttamente, viene ripristinato il backup differenziale nel database SalesInvoices2013
. Il backup differenziale viene archiviato nella directory \\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Diff
.
RESTORE DATABASE SalesInvoices2013
FROM DISK = '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Diff'
WITH BASE = '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full'
[;]
C. Ripristinare l'intestazione del backup
Questo esempio ripristina le informazioni di intestazione per il backup del database \\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full
. Il comando ha come risultato una riga di informazioni per il backup Invoices2013Full
.
RESTORE HEADERONLY
FROM DISK = '\\xxx.xxx.xxx.xxx\backups\yearly\Invoices2013Full'
[;]
È possibile usare le informazioni di intestazione per controllare il contenuto di un backup o per assicurarsi che l'appliance di ripristino di destinazione sia compatibile con l'appliance di backup di origine prima di tentare il ripristino del backup.