Impor file .bak ke database di SQL server

230

Saya punya file dengan .bakekstensi.

Bagaimana saya bisa mengimpor tanggal ini ke database di SQL Server?

alex
sumber
Saya berasumsi Anda menggunakan MSSQL, berikut adalah utas yang menjelaskan beberapa cara untuk memulihkan.
Andrew Keith
Anda dapat membuat database kosong, dan mengembalikan data ke database data kosong, menggunakan .bak
Michel Ayres
Cara paling keren adalah jawaban ke-3, database Klik-kanan, impor, perangkat, pilih file .bak, selesai.
Mafii
Dapatkah seseorang memperluas jawaban untuk solusi ramah otomasi? Melewati UI dan melakukan beberapa klik tidak terlalu efisien.
L. Holanda

Jawaban:

251

Pada SQL Server Management Studio

  1. Klik kanan Database pada panel kiri (Object Explorer)
  2. Klik Pulihkan Basis Data ...
  3. Pilih Perangkat , klik ..., dan tambahkan file .bak Anda
  4. Klik OK , lalu OK lagi

Selesai

Marcelo Mason
sumber
4
Ini bekerja seperti pesona. Ini adalah instruksi yang disederhanakan dengan sangat baik, dan pada dasarnya itu adalah instruksi yang sama dari tautan resmi Microsoft yang tercantum dalam jawaban yang paling banyak dipilih di sini.
Leonardo Lopez
3
Jika gagal, Anda mungkin perlu menghapus basis data yang ada.
DigitalDesignDj
3
Ini tidak bekerja untuk saya. Saya menunjuk ke folder yang benar dan bahkan tidak melihat file. Saya tempel nama file yang tepat pada dialog, dan dikatakan file itu tidak ada. Juga, dialog melihat drive yang tidak ada di server saya. Apakah basis data mengingat lokasi cadangan terakhir dan apakah hanya akan menerima pengembalian dari titik itu? Saya merasa sangat aneh bahwa saya tidak dapat memilih file cadangan untuk dipulihkan.
James
13
File .BAK saya ada di direktori "Unduhan" yang ada di bawah akun pengguna saya. Saya harus memindahkan file .BAK ke root C: agar alat ini dapat melihatnya dan memungkinkan saya untuk mengembalikannya. File di bawah pengguna saya tidak terlihat karena alasan tertentu.
jeremysawesome
6
Ini tidak bekerja. Saya klik kanan "Databases" tetapi tidak ada "Restore Database ...".
user34660
53

File .bak adalah cadangan basis data. Anda dapat memulihkan cadangan dengan metode di bawah ini:

Cara: Memulihkan Cadangan Database (SQL Server Management Studio)

Jon Schoning
sumber
8
Ini tidak bekerja. Artikel itu mengatakan: "... 2) Perluas Database. Tergantung pada databasenya, pilih database pengguna atau perluas Database Sistem, lalu pilih database sistem. 3) Klik kanan database , arahkan ke Tugas, lalu klik Tugas. Mengembalikan." TIDAK! Anda tidak dapat mengklik kanan database yang tidak ada! Anda, bagaimanapun juga, berusaha memulihkan atau mengimpor basis data yang diberikan. Bagaimana Anda bisa mengklik kanan database yang tidak dimuat? Aneh MSDN, dan memperparah bahwa mengembalikan fungsionalitas dalam SSMS dinyatakan tetapi tidak berhasil. Mengapa? Untungnya, perintah SQL yang diberikan orang lain di sini berfungsi.
Nicholas Petersen
14
Ada artikel berbeda untuk memulihkan ke database baru yang ditemukan di sini: 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' 

dan Anda harus memindahkan file mdf, ndf & ldf yang sesuai menggunakan

 With Move 'primarydatafilename' To 'D:\DB\data.mdf', 
 Move 'secondarydatafile'To 'D:\DB\data1.ndf', 
 Move 'logfilename' To 'D:\DB\log.ldf'
RameshVel
sumber
1
Ini sangat membantu bagi saya karena saya ingin mengembalikan file .bak ke wadah Docker sql dengan host macOS menggunakan Azure Data Studio. Yang harus saya lakukan adalah menyalin .bak ke wadah, menyesuaikan jalur dan mengubah ke /, dan saya berhasil mengembalikan.
andrewb
Senang itu membantu @andrewb :)
RameshVel
30

Anda cukup mengembalikan file cadangan database ini menggunakan metode SQL Server asli, atau Anda dapat menggunakan alat Pemulihan ApexSQL untuk secara cepat melampirkan file dan mengaksesnya sebagai database yang sepenuhnya dipulihkan.

Penafian: Saya bekerja sebagai Teknisi Dukungan Produk di ApexSQL

Ivan Stankovic
sumber
18

Alih-alih memilih Restore Database ..., pilih Restore Files and Filegroups ...

Kemudian masukkan nama database, pilih jalur file .bak Anda sebagai sumber, centang kotak centang pengembalian, dan klik Ok. Jika file .bak valid, itu akan berfungsi.

(Nama opsi pemulihan SQL Server tidak intuitif untuk tugas yang seharusnya sangat sederhana.)

James Lawruk
sumber
Ini saran yang bagus, saya melakukan ini dan melaporkan bahwa pemulihan berhasil. Tetapi sedikit masalah masih tetap ... database tidak terdaftar dalam objek explorer. Saya mencoba "melampirkan", dan bahkan memiliki file .mdf yang benar tersedia (saya kira produk dari pemulihan). Jika saya mencoba melampirkan, itu melempar kesalahan yang sudah digunakan. Apakah Anda punya tips untuk tahap ini?
AlanSE
Pastikan untuk melakukan penyegaran di akhir untuk melihat database baru Anda. Ini mungkin solusi tercepat untuk bangkit dan berlari.
demongolem
Ini adalah opsi yang berfungsi untuk saya ketika ingin mengimpor basis data yang sama .bak sebagai basis data baru secara lokal
Gurnzbot
7
  1. Terhubung ke server yang Anda ingin menyimpan DB Anda
  2. Klik kanan Database
  3. Klik Pulihkan
  4. Pilih tombol radio Perangkat di bawah bagian sumber
  5. Klik Tambah.
  6. Arahkan ke jalur tempat file .bak Anda disimpan, pilih dan klik OK
  7. Masukkan tujuan DB Anda
  8. Masukkan nama untuk menyimpan DB Anda
  9. Klik OK

Selesai

Yash Saraiya
sumber
4

Cukup gunakan

sp_restoredb 'Nama Basis Data Anda', 'Lokasi Dari yang Anda ingin pulihkan'

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

Omprakash tomar
sumber
apa perbedaan antara ini dan RESTORE DATABASEseperti di msdn.microsoft.com/en-us/library/ms178099(v=sql.105).aspx ?
Unhammer
1
Pulihkan basis data melakukan operasi pengembalian hanya jika struktur DB Anda sama dengan file cadangan, tetapi sp_restoredblakukan pengembalian bahkan database Anda memiliki struktur yang berbeda atau benar-benar kosong (baru).
Omprakash tomar
3
  1. Salin file .bak cadangan Anda di lokasi berikut di komputer Anda: C: \ Program Files \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS \ MSSQL \ DATA
  2. Terhubung ke server yang Anda ingin menyimpan DB Anda
  3. Klik kanan Database
  4. Klik Pulihkan
  5. Pilih tombol radio Perangkat di bawah bagian sumber
  6. Klik Tambah.
  7. Arahkan ke jalur tempat file .bak Anda disimpan, pilih dan klik OK
  8. Masukkan tujuan DB Anda
  9. Masukkan nama untuk menyimpan DB Anda
  10. Klik OK

Solusi di atas tidak mengetahui tempat menyimpan file cadangan (.bak) Anda. Ini harus melakukan trik. Ini berhasil untuk saya.

Madhumita
sumber
1

Anda dapat menggunakan paket simpul, jika Anda sering harus mengembalikan database dalam proses pengembangan.

Install:

npm install -g sql-bak-restore

Pemakaian:

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

Argumen:

  • bakpath, path relatif atau absolut ke file
  • dbName, basis data yang akan dipulihkan (!! basis data dengan nama ini akan dihapus jika ada !!)
  • oldDbName, nama basis data (jika Anda tidak tahu, tentukan sesuatu dan jalankan, Anda akan melihat database yang tersedia setelah dijalankan.)
  • pemilik, userName untuk membuat dan memberinya hak istimewa db_owner (kata sandi "1")

!! sqlcmd utilitas baris perintah harus dalam variabel PATH Anda.

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

Vladimir Buskin
sumber
1

Di Microsoft SQL Server Management Studio 2019:

masukkan deskripsi gambar di sini

Jendela Restore Database:

  1. Pilih Perangkat

  2. Pilih Tambah dan pilih file target

  3. OK untuk konfirmasi

  4. OK untuk mengonfirmasi pengembalian

masukkan deskripsi gambar di sini

Weky
sumber