Importa il file .bak in un database nel server SQL


230

Ho un file con .bakestensione.

Come posso importare questa data in un database in SQL Server?


Presumo che tu stia utilizzando MSSQL, ecco un thread che spiega alcuni modi per ripristinare.
Andrew Keith,

È possibile creare un database vuoto e ripristinare i dati nella base dati vuota, utilizzando il proprio .bak
Michel Ayres

Il modo più esatto è la terza risposta, database di scelta rapida, importazione, dispositivo, selezionare il file .bak, finito.
Mafii,

Qualcuno può espandere la risposta per una soluzione di automazione amichevole? Passare attraverso l'interfaccia utente e fare diversi clic non è molto efficiente.
L. Holanda,

Risposte:


251

Su SQL Server Management Studio

  1. Fare clic con il pulsante destro del mouse su Database nel riquadro a sinistra (Esplora oggetti)
  2. Fai clic su Ripristina database ...
  3. Scegli Dispositivo , fai clic su ...e aggiungi il tuo file .bak
  4. Fai clic su OK , quindi di nuovo su OK

Fatto.


4
Funziona come un fascino. Queste sono eccellenti istruzioni semplificate e sono essenzialmente le stesse istruzioni del collegamento Microsoft ufficiale annotate nella risposta più votata qui.
Leonardo Lopez,

3
In caso contrario, probabilmente è necessario cancellare un database esistente.
DigitalDesignDj

3
Questo non funziona per me. Indico la cartella corretta e non vede nemmeno i file. Incollo il nome esatto del file nella finestra di dialogo e dice che il file non esiste. Inoltre, la finestra di dialogo visualizza un'unità che non esiste sul mio server. Il database ricorda la posizione dell'ultimo backup e accetterà solo un ripristino da quel punto? Trovo molto strano che non riesca a selezionare un file di backup da ripristinare.
James,

13
Il mio file .BAK era nella directory "Download" che esisteva sotto il mio account utente. Ho dovuto spostare il file .BAK nella radice della C: affinché questo strumento potesse vederlo e permettermi di ripristinarlo. I file sotto il mio utente non sono stati visti per qualche motivo.
jeremysawesome

6
Questo non funziona. Faccio clic con il tasto destro del mouse su "Database" ma non è presente "Ripristina database ...".
user34660

53

I file .bak sono backup del database. È possibile ripristinare il backup con il metodo seguente:

Procedura: ripristinare un backup del database (SQL Server Management Studio)


8
Questo non funziona. L'articolo dice: "... 2) Espandi database. A seconda del database, selezionare un database utente o espandere Database di sistema, quindi selezionare un database di sistema. 3) Fare clic con il pulsante destro del mouse sul database , scegliere Attività, quindi fare clic su Attività Ristabilire." NON! Non è possibile fare clic con il tasto destro su un database che non esiste! Dopotutto, stai cercando di ripristinare o importare il database specificato. Come si può fare clic con il tasto destro su un database che non è stato caricato? Bizzarro di MSDN e aggravante che ripristina la funzionalità in SSMS è dichiarato ma non funziona. Perché? Fortunatamente, i comandi SQL che altri danno qui funzionano.
Nicholas Petersen,

14
C'è un altro articolo per il ripristino in un nuovo database trovato qui: msdn.microsoft.com/en-us/library/ms186390(v=sql.90).aspx
Jon Schoning

35
RESTORE FILELISTONLY 
FROM DISK = 'D:\3.0 Databases\DB.bak' 

RESTORE DATABASE YourDB
FROM DISK = 'D:\3.0 Databases\DB.bak' 

e devi spostare i file mdf, ndf e ldf appropriati usando

 With Move 'primarydatafilename' To 'D:\DB\data.mdf', 
 Move 'secondarydatafile'To 'D:\DB\data1.ndf', 
 Move 'logfilename' To 'D:\DB\log.ldf'

1
Questo è stato molto utile per me poiché volevo ripristinare un file .bak in un contenitore Docker sql con un host macOS usando Azure Data Studio. Tutto quello che dovevo fare era copiare il .bak nel contenitore, regolare il percorso e cambiare in /, e sono stato in grado di ripristinare con successo.
Andrewb

Sono contento che abbia aiutato @andrewb :)
RameshVel il

30

Puoi semplicemente ripristinare questi file di backup del database usando i metodi nativi di SQL Server oppure puoi usare lo strumento ApexSQL Restore per collegare virtualmente rapidamente i file e accedervi come database completamente ripristinati.

Disclaimer: lavoro come tecnico dell'assistenza ai prodotti in ApexSQL


18

Invece di scegliere Ripristina database ..., selezionare Ripristina file e filegroup ...

Quindi immettere un nome di database, selezionare il percorso del file .bak come origine, selezionare la casella di controllo Ripristina e fare clic su OK. Se il file .bak è valido, funzionerà.

(I nomi delle opzioni di ripristino di SQL Server non sono intuitivi per ciò che dovrebbe essere un'attività molto semplice.)


Questo è un buon consiglio, l'ho fatto e ha riferito che il ripristino è andato a buon fine. Ma rimane ancora un piccolo problema ... il database non è elencato in Esplora oggetti. Provo "allega", e ha anche il file .mdf corretto disponibile (presumo un prodotto del ripristino). Se provo ad allegare, viene generato un errore che è già in uso. Hai qualche consiglio per questa fase?
AlanSE,

Assicurati di fare un aggiornamento alla fine per vedere il tuo nuovo database. Questa potrebbe essere la soluzione più rapida per iniziare.
demongolem,

Questa è l'opzione che ha funzionato per me quando volevo importare localmente lo stesso database .bak come nuovo database
Gurnzbot

7
  1. Connettiti a un server in cui desideri archiviare il tuo DB
  2. Fare clic con il tasto destro del mouse su Database
  3. Fai clic su Ripristina
  4. Scegli il pulsante di opzione Dispositivo nella sezione sorgente
  5. Clicca Aggiungi.
  6. Passare al percorso in cui è archiviato il file .bak, selezionarlo e fare clic su OK
  7. Inserisci la destinazione del tuo DB
  8. Immettere il nome con il quale si desidera memorizzare il proprio DB
  9. Clicca OK

Fatto


4

Basta usare

sp_restoredb "Nome database", "Posizione da ripristinare"

Esempio: sp_restoredb 'omDB', 'D: \ abc.bak'


qual è la differenza tra questo e RESTORE DATABASEcome in msdn.microsoft.com/en-us/library/ms178099(v=sql.105).aspx ?
unhammer,

1
Il database di ripristino esegue l'operazione di ripristino solo se la struttura del DB è uguale al file di backup, ma sp_restoredbesegue il ripristino anche se il database ha una struttura diversa o è completamente vuoto (nuovo).
Omprakash tomar,

3
  1. Copia il tuo file di backup .bak nella seguente posizione del tuo PC: C: \ Programmi \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS \ MSSQL \ DATA
  2. Connettiti a un server in cui desideri archiviare il tuo DB
  3. Fare clic con il tasto destro del mouse su Database
  4. Fai clic su Ripristina
  5. Scegli il pulsante di opzione Dispositivo nella sezione sorgente
  6. Clicca Aggiungi.
  7. Passare al percorso in cui è archiviato il file .bak, selezionarlo e fare clic su OK
  8. Inserisci la destinazione del tuo DB
  9. Immettere il nome con il quale si desidera memorizzare il proprio DB
  10. Clicca OK

Le soluzioni di cui sopra non hanno individuato dove conservare il file di backup (.bak). Questo dovrebbe fare il trucco. Ha funzionato per me.


1

È possibile utilizzare il pacchetto nodo, se è spesso necessario ripristinare i database nel processo di sviluppo.

Installare:

npm install -g sql-bak-restore

Uso:

sql-bak-restore <bakPath> <dbName> <oldDbName> <owner>

Argomenti:

  • bakpath, percorso relativo o assoluto del file
  • dbName, su quale database ripristinare (!! il database con questo nome verrà eliminato se esiste !!)
  • oldDbName, nome del database (se non lo sai, specifica qualcosa ed esegui, vedrai i database disponibili dopo l'esecuzione.)
  • proprietario, userName per creargli i privilegi db_owner (password "1")

!! L' utilità della riga di comando sqlcmd dovrebbe essere nella variabile PATH.

https://github.com/vladimirbuskin/sql-bak-restore/


1

Su Microsoft SQL Server Management Studio 2019:

inserisci qui la descrizione dell'immagine

Nella finestra Ripristina database:

  1. Scegli dispositivo

  2. Scegli Aggiungi e seleziona il file di destinazione

  3. OK per confermare

  4. OK per confermare il ripristino

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.