Come ripristinare un database SQL utilizzando il ripristino dalla riga di comando con NMM
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Instructions
Questo articolo documenta la procedura da seguire per ripristinare correttamente un database SQL di cui è stato eseguito il backup con NMM utilizzando VDI Potrebbe essere necessario ripristinare un database SQL dal backup utilizzando la riga di
comando se si verifica un problema con il ripristino dalla GUI (utente NetWorker per la GUI di SQL Server o plug-in SSMS). L'attività di esplorazione dalla GUI è lenta o il database richiesto non è visibile nella GUI per il ripristino.
In genere, quando viene eseguito il backup di un singolo database, vengono creati i seguenti saveset:
un backup completo di un singolo database avrà i seguenti saveset:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:26:41 119 MB 3209027663 cb completo MSSQL$FINANCE:testdb ==> saveset
backup completo SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:29:16 5 KB 3192250597 cb incr MSSQL$FINANCE: testdb ==> saveset di metadati.
Un backup incrementale di un singolo database avrà i seguenti saveset:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:34:14 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb ==> saveset
di backup dei log SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:40:31 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb ==> saveset
di metadati Si noti che ogni backup dispone di un saveset di metadati, che viene sempre creato come livello 'incr' ed è normalmente molto ridotto. Questo saveset contiene informazioni che consentono di visualizzare l'elenco dei database nella GUI "NetWorker User for SQL server". Questo saveset viene creato con ogni backup SQL VDI. Tuttavia, è possibile che questo saveset non esista se il processo di clonazione manuale non include erroneamente questo saveset per la clonazione e se il saveset originale non esiste più. In questo caso, il ripristino dalla riga di comando è l'unica opzione.
Una volta determinato il backup da cui è necessario eseguire il ripristino, è possibile creare la riga di comando. Di seguito è riportato un esempio di ripristino command:
nsrsqlrc -s nsr-server -c sql12srv1 -t "5/25/2016 1:34:14 PM" -d "MSSQL$FINANCE:testdb-recovered" -C " 'testdb' = 'c:\recover\testdb.mdf', 'testdb_log' = 'c:\recover\testdb_log.ldf', 'testdb_log1' = 'c:\recover\testdb_log1.ldf'" "MSSQL$FINANCE:testdb"
Nell'opzione command-s
precedente è specificare il nome del server NetWorker,
-c viene utilizzata per specificare il client di origine (se il ripristino viene eseguito su un host diverso dal client di origine),
-d specifica il database di destinazione su cui eseguire il ripristino. Questo DB non esisterà. Il processo di ripristino creerà il database sull'istanza di destinazione.
-C specifica che si tratta di un ripristino di copia. I parametri dopo -C specificano i nomi logici dei file nel database. Questi nomi devono corrispondere esattamente ai nomi logici del database da ripristinare. Se il database esiste, eseguire le proprietà sul nome del database dalla GUI di SSMS e cercare in "Files".
Se il ripristino viene eseguito su un SQL Server in cluster, aggiungere "-A "virtual-server name" " al comando di ripristino.
L'ultimo componente del comando è il nome del DB da ripristinare, ad esempio MSSQL$
FINANCE:testdb
Se non si è sicuri di quali siano i nomi logici dei file di database, è possibile fornire un comando incompleto come indicato di seguito:
nsrsqlrc -s nsr-server -c sql12srv1 -t "5/25/2016 1:34:14 PM" -d "MSSQL$FINANCE:testdb-recovered" -C " 'mydb' = 'c:\ recover\testdb.mdf'" "MSSQL$FINANCE:testdb"
43708:(pid 2144):Ora di inizio: Wed May 25 15:37:42 2016
43621:(pid 2144):Nome computer: Nome utente SQL12SRV1: administrator
NSR_CLIENT: sql12srv1.jets.local;
NSR_SERVER: nsr-server;
37725:(pid 2144):Ripristino del database 'testdb' in 'testdb-recovered' ...
142468:(pid 2144):[2292]nsr/db_apps/bsmsql/rcstripes.c(222): Ricerca del backup per il saveset MSSQL$FINANCE:/testdb.
37945:(pid 2144):Riposizionamento mancante per il file logico testdb.
37945:(pid 2144):Riposizionamento mancante per il file logico testdb_log.
37945:(pid 2144):Riposizionamento mancante per il file logico testdb_log1.
37946:(pid 2144):Nessun file logico denominato mydb nel database
originale 29401:(pid 2144):D errore dell'elenco di riposizionamento file atabase. L'elenco effettivo dei file è:
37947:(pid 2144): testdb = C:\Programmi\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144): testdb_log = C:\Programmi\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(PID 2144): testdb_log1 = C:\Programmi\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log1.ldf
142468:(PID 2144):[2292]nsr/db_apps/bsmsql/rcstripes.c(222): Ricerca del backup per il saveset MSSQL$FINANCE:/testdb.
37945:(pid 2144):Riposizionamento mancante per il file logico testdb.
37945:(pid 2144):Riposizionamento mancante per il file logico testdb_log.
37945:(pid 2144):Riposizionamento mancante per testdb_log1 di file logico.
37946:(pid 2144):Nessun file logico denominato mydb nel database
originale 29401:(pid 2144):D errore dell'elenco di riposizionamento file atabase. L'elenco effettivo dei file è:
37947:(pid 2144): testdb = C:\Programmi\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144): testdb_log = C:\Programmi\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(PID 2144): testdb_log1 = C:\Programmi\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log1.ldf
Operazione di ripristino completata con errori. Fare riferimento al file di log di backup del modulo per i dettagli. Errore XBSA sconosciuto 1169 (0x491) nsr/db_apps/bsmsql/rcovmain.cpp(442): Immissione di cleanUp(). nsr/db_apps/bsmsql/rcovmain.cpp(500): Uscita da cleanUp().
43709:(pid 2144):Tempo di arresto: Wed May 25 15:37:49 2016
***********************
Nel comando precedente ho dato un nome logico casuale 'mydb' e il comando sputa fuori il nome logico effettivo dei file DB e la loro posizione originale. È possibile utilizzare queste informazioni per creare il comando di ripristino. È necessario fornire un percorso diverso in cui ripristinare i dati. Non è possibile e non si deve fornire il percorso di origine originale nel comando di restore per evitare il rischio di sovrascrivere i dati esistenti.
L'ora di backup per il ripristino può essere ottenuta dal comando mminfo. È possibile utilizzare il tempo di salvataggio mostrato nell'output oppure è possibile segnalare nsavetime e utilizzare questo tempo.
ad esempio:
mminfo -avot -s nsr-server -q "client=sql12srv1,savetime >= yesterday"
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:26:41 119 MB 3209027663 cb completo MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:29:16 5 KB 3192250597 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:34:14 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1
25/05/2016 13:40:31 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb
mminfo -avot -s nsr-server -q "client=sql12srv1,savetime >= ieri" -r volume,client,sumflags,sumsize,livello,savetime(25),nsavetime,nome
SQLbackups.001 sql12srv1 cb 119 MB pieno 25/05/2016 13:26:41 1464197201 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 25/05/2016 13:29:16 1464197356 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 1320 MB incr 25/05/2016 13:34:14 1464197654 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 25/05/2016 13:40:31 1464198031 MSSQL$FINANCE:testdb
Si noti che è possibile specificare il valore nsavetime/savetime del saveset dei metadati o del saveset di dati effettivo. Entrambi funzioneranno.
Scenario 2:
Se i backup vengono registrati nel db dei supporti senza i nomi dei database, il momento del backup richiesto non sarà così ovvio. Ad esempio, tutti i backup DB hanno gli stessi nomi dei saveset riportati di seguito:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:43:15 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:45:26 151 KB 2655391455 cb incr MSSQL$FINANCE:
Da quanto sopra non si può dedurre quale saveset contiene il backup necessario.
Se il saveset dei dati medata esiste, i backup saranno esplorabili dalla GUI ed è possibile trovare il nome del DB e l'ora di backup dalla GUI. Ad esempio, se DB24 è stato richiesto, la GUI mostra l'ora di backup come "5/25/2016 4:49 PM".
Se il saveset dei metadati non è presente, sarà necessario eseguire il comando nsrinfo per trovare l'ora di salvataggio per il ripristino. Ad esempio, se mminfo mostra i saveset come indicato di seguito:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:43:15 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:45:26 151 KB 2655391455 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:47:34 151 KB 2638614367 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:49:42 151 KB 2621837279 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:51:50 151 KB 2605060191 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:53:58 151 KB 2588283103 cb incr MSSQL$FINANCE:
Eseguire nsrinfo sui tempi di salvataggio come indicato di seguito per ottenere informazioni sul DB che fa parte del saveset:
nsrinfo -n mssql -t "25/05/2016 16:43:15 PM" sql12srv1
client di scansione 'sql12srv1' per savetime 1464208995(25/05/2016 16:43:15) dal namespace
mssql MSSQL$FINANCE:/ DB21
MSSQL$FINANCE:/DB21%/files.1464208995.1464209044
2 oggetti trovati
nsrinfo -n mssql -t "25/05/2016 16:49:42" sql12srv1
client di scansione 'sql12srv1' per savetime 1464209382(25/05/2016 16:49:42) dallo spazio
dei nomi mssql MSSQL$FINANCE:/DB24
MSSQL$FINANCE:/DB24%/files.1464209382.1464209437
2 object trovati
Poiché i saveset non mostrano i nomi dei database, quanto sopra potrebbe essere un po' un tentativo per tentativi nello scenario in cui il saveset di metadati non esiste. Utilizzare la dimensione approssimativa del database come indizio per restringere la query nsrinfo ad alcuni saveset.
Article Properties
Article Number: 000022417
Article Type: How To
Last Modified: 09 Aug 2022
Version: 4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.