"Tidak ada cadangan yang dipilih untuk dipulihkan" SQL Server 2012

150

Saya memiliki database SQL Server 2012 dengan filestream diaktifkan. Namun, ketika saya mencadangkannya dan mencoba mengembalikannya pada contoh SQL Server 2012 lainnya (di komputer lain), saya cukup menerima pesan ini bahwa:

Tidak ada cadangan yang dipilih untuk dipulihkan.

Bahkan tidak ada satu baris penjelasan pun. Ada apa di sini?

Setiap database lain tanpa filestream adalah OK dan dapat dipulihkan dengan sukses. Apakah ini terkait dengan filestream? Haruskah saya menginstal perbaikan terbaru atau sesuatu seperti itu.

Saeed Neamati
sumber
1
Belum menyelesaikannya. Tampaknya konfigurasi SQL Server memiliki masalah. Saya pikir segalanya harus lebih mudah dari ini.
Saeed Neamati
1
Bisakah Anda memberikan T-SQL yang Anda gunakan untuk mencoba mengembalikan?
Ben Thul
3
Yah, saya menggunakan GUI SSMS.
Saeed Neamati
Meskipun melakukannya dengan cara seperti itu, harus ada tombol "script" di suatu tempat dekat bagian atas jendela. Setelah Anda mengatur semuanya dengan cara yang Anda pikir akan diatur untuk pemulihan, tekan itu alih-alih "ok" dan itu akan memunculkan T-SQL yang akan dijalankan terhadap server untuk pemulihan.
Ben Thul
1
Apakah masalah izin bagi saya juga dengan SQL 2014 Standard (standalone) pada WS 2012 R2 (workgroups) tetapi harus reboot dua kali untuk izin 'take.' Untuk apa itu layak .. Semoga Anda semua terselesaikan juga.
BaldEagle

Jawaban:

177

Saya punya masalah ini dan ternyata saya mencoba mengembalikan ke versi SQL yang salah. Jika Anda ingin informasi lebih lanjut tentang apa yang terjadi, coba pulihkan database menggunakan SQL berikut:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

Itu seharusnya memberi Anda pesan kesalahan yang Anda perlu debug ini.

pengguna489998
sumber
Apa pesan kesalahan yang Anda dapatkan ketika Anda mencoba mengembalikan menggunakan SQL di atas?
user489998
Tampaknya memulihkan DB menggunakan skrip T-SQL akan berhasil. Saya pikir karena kami belum mencadangkan data filestream, UI tidak dapat mengatasinya.
Saeed Neamati
1
Bagus, saya suka pendekatan SQL mentah. Saya mendapatkan pesan seperti `Set media memiliki 2 keluarga media tetapi hanya 1 yang disediakan. Semua anggota harus disediakan.` - apakah ini berarti bahwa sumber cadangan berbeda versi SQL Server dari target cadangan? Ketika saya mencoba dengan pendekatan UI ("Kembalikan"), saya mendapatkan pesan @ atasNo backupset selected to be restored.
The Pea Merah
Jika Anda ingin mengganti database yang ada benar-benar gunakan DENGAN REPLACE pilihan RESTORE DATABASE <YourDatabase> FROM DISK='<the path to your backup file>\<YourDatabase>.bak' WITH REPLACE
Iasmini Gomes
63

Masalah saya akhirnya adalah izin . Saya di mesin dev dan disalin melalui Homegroup. Entah bagaimana, mungkin berdasarkan tempat saya menyalin file, izin menjadi kacau dan Management Studio tidak bisa membaca file. Karena ini adalah dev, saya hanya memberikan izin Semua Orang ke file bak dan kemudian dapat berhasil mengembalikan melalui GUI.

Tyler Forsythe
sumber
Ini akhirnya bekerja untuk saya juga. BEGITU DUMB bahwa nama pengguna saya dapat memiliki izin untuk folder itu, tetapi satu-satunya cara agar ini berfungsi adalah dengan menambahkan grup "Semua Orang" ke izin pada folder tersebut. Sangat menyebalkan, tapi terima kasih telah menghemat waktu saya!
hurleystylee
5
Kurangnya pesan kesalahan yang bermanfaat dalam kasus ini. Masalah saya juga terpecahkan dengan ini.
dodgy_coder
1
Booya! Harus menyukai kesalahan umum yang tidak memberi tahu Anda apa pun. Tentu saja itu izin. Terjadi pada saya ketika memulihkan dari sql server di domain yang berbeda. Mengubah izin file .bak untuk semua orang. Bekerja dengan baik setelah itu.
Prescient
Pernah mengalami masalah yang sama ketika mencoba mengembalikan database dari .bakfile, yang dibuat oleh layanan web unggah file, yang berjalan di bawah IISApplicationPoolIdentity
apdevelop
26

Saat berlari:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

Itu memberi saya kesalahan berikut:

Keluarga media pada perangkat 'C: \ NorthwindDB.bak' salah terbentuk. SQL Server tidak dapat memproses keluarga media ini. KEMBALIKAN HEADERONLY berhenti secara tidak normal. (Microsoft SQL Server, Kesalahan: 3241) Blockquote

Ternyata Anda tidak dapat mengambil DB dari versi SQL yang lebih tinggi ke versi yang lebih rendah, bahkan jika tingkat kompatibilitasnya sama pada DB sumber dan tujuan. Untuk memeriksa jalankan versi SQL:

Select @@Version

Untuk melihat perbedaannya, cukup buat DB di server SQL sumber Anda dan coba lakukan pemulihan dari file cadangan Anda, ketika Anda melakukan ini dengan SSMS, setelah Anda mengambil file cadangan itu akan menampilkan beberapa info tentang itu sebagai yang ditentang ketika Anda buka dari server versi yang lebih rendah yang hanya akan mengatakan "tidak ada cadangan yang dipilih untuk dipulihkan" masukkan deskripsi gambar di sini

Jadi, jika Anda masih perlu memindahkan data Anda ke versi SQL yang lebih rendah maka periksa ini .

Alon Atau
sumber
jadi jika saya mengambil cadangan db dari mesin dengan sql server 2014 enterprise - dapatkah dipulihkan pada sql server 2014 express?
chester89
@ chester89 Saya pikir itu tergantung pada jenis fungsi apa yang Anda miliki di DB. Dan jenis cadangannya. Versi ekspres tidak mengenali cadangan kompres. Juga, jika versi perusahaan menggunakan sesuatu yang unik untuk perusahaan, versi gratis (ekspres) tidak akan mengenalinya. Tetapi, jika Anda memiliki sesuatu yang standar, secara teoritis itu harus dikenali.
Juan Acosta
@Uancosta ya, saya menggabungkannya. Dalam kasus saya, tidak ada fungsionalitas khusus perusahaan yang digunakan, jadi saya memulihkan cadangan tanpa masalah
chester89
@JuanAcosta dapatkah Anda mengarahkan saya ke dokumentasi yang mengatakan edisi ekspres tidak dapat mengembalikan cadangan yang dikompresi?
chester89
@Chester silakan periksa halaman 234 poin 3. Opsi default adalah satu-satunya yang tersedia dalam versi ekspres. books.google.com.au/...
Juan Acosta
15

Jalankan SQL Server Management Studio sebagai administrator (klik kanan pintasan / exe, lalu pilih "Run as Administrator"), kemudian coba pulihkan.

Keith
sumber
10

Saya pikir saya tidak cukup bodoh untuk mencampur versi - namun, saya tidak menyadari bahwa pada server baru saya, contoh SQL Server 2005 sudah diinstal sejak lahir SQLEXPRESS. Ketika mencoba mengembalikan SQL Server 2008 R2 saya membuat cadangan database SSMS 2012 keSQLEXPRESS instance, daftar kumpulan cadangan kosong.

Akhirnya saya menyadari bahwa SQLEXPRESSinstance pada server bukan instance 2012, tetapi 2005. Saya memutus dan terhubung ke instance 2012 aktual (dalam kasus saya bernama SQLEXPRESS2012), dan itu (jelas) bekerja.

Frederik Struck-Schøning
sumber
2
Ini mengarahkan saya ke arah yang benar untuk masalah saya. Saya menerima kesalahan yang sama dengan poster asli tapi itu karena saya berusaha mengembalikan cadangan dari SQL Express 2012 ke contoh SQL Server 2008. Maklum ini tidak disarankan, sayangnya kesalahannya tidak cukup deskriptif untuk sampai ke akar masalah.
LeastOne
1
Wow! Saya telah menginstal terlalu banyak hot-fix dari situs tetapi kesalahan itu tidak hilang. Saya melihat jawaban ini dan login dengan Sql Server 2012 contoh dan mencoba mengembalikan, IT BEKERJA! Huh terima kasih :)
Ali Baig
1
Jadi Anda mengatakan Anda tidak dapat memulihkan dari versi lengkap ke versi ekspres?
Zapnologica
7

Masalah saya adalah bahwa pengguna saya berada di grup Builtin-Administrators dan tidak ada pengguna dengan peran Sysadmin di SQL Server. Saya baru saja memulai Studio Manajemen sebagai Administrator. Dengan cara ini dimungkinkan untuk mengembalikan database.

Liz
sumber
Saya menggunakan artikel berikut untuk membuat pengguna sysadmin baru (lihat Bagian 2 menggunakan mode single-user): wikihow.com/Reset-SA-Password-in-Sql-Server
Savage
6

FYI: Saya menemukan bahwa ketika memulihkan, saya harus menggunakan kredensial (Pengguna SQL) yang sama untuk masuk ke SSMS. Saya pertama kali mencoba pemulihan menggunakan akun Windows Authentication.

Ben Ripley
sumber
6

Dalam kasus saya, itu adalah izin dan fakta bahwa saya menggunakan "Restore Files and Filegroups ..." daripada hanya "Restore Database ...".

Itu membuat perbedaan.

masukkan deskripsi gambar di sini

Brian
sumber
6

Bagi saya ini adalah masalah hak istimewa pengguna. Saya masuk dengan pengguna sa dan berfungsi dengan baik.

Sharfi
sumber
5

Bagi saya masalahnya adalah memiliki file .BAK yang terletak di folder terenkripsi di server. Bahkan dengan hak Admin penuh, saya tidak pernah bisa mendapatkan SSMS untuk membaca file. Memindahkan .BAK ke folder yang tidak terenkripsi memecahkan masalah saya. Perhatikan bahwa setelah memindahkan file Anda mungkin harus juga mengubah properti pada file yang sebenarnya untuk menghapus enkripsi (klik kanan, properti, lanjutan, hapus centang "mengenkripsi konten untuk mengamankan data".

GadgetNC
sumber
3

Saya memiliki masalah yang sama dengan SQL Server 2014 (Management Studio tidak bisa melihat folder tempat file cadangan berada, ketika mencoba untuk menemukannya untuk operasi Pulihkan). Utas ini menyimpan jawaban yang memecahkan masalah saya. Mengutip:

Akun layanan SQL Server dapat ditemukan oleh Start-> Control Panel-> Administrative Tools-> Services. Klik dua kali pada layanan SQL Server-> Log Masuk. Anda akan menggunakan "Akun Sistem Lokal" atau "Akun ini" untuk menentukan akun tertentu. Jika Anda menggunakan akun Sistem Lokal, Anda tidak akan dapat merujuk cadangan yang bukan lokal ke server. Sebaliknya, jika Anda telah menetapkan akun yang akan digunakan, ini adalah akun yang perlu memiliki akses ke lokasi file cadangan. Kemampuan Anda untuk mengakses cadangan menggunakan login pribadi Anda tidak relevan; itu adalah akun SQL Server yang digunakan, meskipun Anda memulai cadangan. Staf TI Anda harus dapat menentukan hak apa yang diberikan untuk setiap akun.

Semoga itu bisa membantu seseorang.

BCA
sumber
menghargai bahwa Anda mengutip sumbernya di sini sejalan, jauh lebih mudah untuk menggunakan informasi itu tanpa menavigasi jauh dari halaman ini.
qxotk
3

Dalam kasus saya (instalasi sql server baru, pengguna yang baru dibuat), pengguna saya tidak memiliki izin yang diperlukan. Saya masuk ke Studio Manajemen sebagai sa , lalu pergi ke Keamanan / Masuk, klik kanan nama pengguna saya, Properti, lalu di bagian Peran Server yang saya periksa sysadmin.

Marc.2377
sumber
2

Bagi saya, itu karena file cadangan masih terbuka oleh proses lain. Berikut log kejadiannya:

BackupDiskFile :: OpenMedia: Perangkat cadangan 'X: \ Backups \ MyDatabase \ MyDatabase_backup_2014_08_22_132234_8270986.bak' gagal dibuka. Kesalahan sistem operasi 32 (Proses tidak dapat mengakses file karena sedang digunakan oleh proses lain.).

Cukup menutup dan membuka kembali Sql Server Management Studio menyelesaikannya (jadi jelas itu ssms.exe yang memiliki pegangan ..)

JohnZaj
sumber
1

Alasan potensial lain untuk masalah ini tampaknya adalah Google Drive. Google Drive sedang mengompresi file bak atau sesuatu, jadi jika Anda ingin mentransfer cadangan basis data melalui Google Drive, tampaknya Anda harus men-zipnya terlebih dahulu.

James Gould
sumber
1

Jika Anda ingin mengganti database yang ada sepenuhnya gunakan opsi WITH REPLACE :

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'
WITH REPLACE
Iasmini Gomes
sumber
1

Dalam kasus saya, itu adalah masalah izin.

masukkan deskripsi gambar di sini

Untuk pengguna Windows, yang saya gunakan tidak memiliki dbcreatorperan.

Jadi saya mengikuti langkah-langkah di bawah ini

  1. Hubungkan sake server SQL
  2. Buka Securitydi Object Explorer
  3. Memperluas Logins
  4. Klik kanan pada pengguna Windows yang dimaksud
  5. Klik pada Properties
  6. Pilih Server Rolesdari Select a pageopsi
  7. Periksa dbcreatorperan untuk pengguna
  8. Klik OK

masukkan deskripsi gambar di sini

Devraj Gadhavi
sumber
0

Menggunakan SQL Server 2012 Express.

Kesalahan saya (dari SQL Manager - Pulihkan Database Dialog):

No backupset selected to be restored

Lebih lanjut, tidak ada set cadangan yang ditampilkan dalam daftar untuk dipilih.

Masalahnya adalah bahwa saya telah memindahkan 1 dari 5 file cadangan ke folder di mana pengguna layanan masuk SQL Server tidak memiliki izin - saya mencoba menambahkan pengguna itu, tetapi tidak bisa mendapatkan pengguna NT Layanan \ MSSQL $ SQLEXPRESS ke dalam keamanan daftar.

Saya memindahkan file di bawah folder Documents untuk pengguna layanan, dan itu memungkinkannya untuk membaca semua file yang saya pilih - 4 pada saat itu - dan kesalahannya berubah menjadi "set media hilang" - kemudian saya mencari-cari file cadangan lain , dan ketika saya menambahkan bahwa saya dapat memulihkan.

Jawaban dalam pertanyaan ini membantu saya mencari di tempat yang tepat dan mencari jalan keluar untuk solusi.

condiosluzverde
sumber
0

Bagi saya, itu masalah izin. Saya menginstal SQL server menggunakan akun pengguna lokal dan sebelum bergabung dengan domain perusahaan saya. Kemudian, saya mencoba memulihkan database menggunakan akun domain saya yang tidak memiliki izin yang diperlukan untuk memulihkan database SQL server. Anda perlu memperbaiki izin untuk akun domain Anda dan memberikan izin admin sistem pada contoh server SQL yang Anda miliki.

Anas Ghanem
sumber
0

Saya mendapat pesan kesalahan yang sama meskipun saya membuat cadangan dan memulihkan pada mesin yang sama.

Masalahnya dari sini: ketika cadangan, saya punya 2 item di kotak tujuan.

Jadi perbaikannya adalah: pastikan hanya 1 item di kotak 'tujuan'. Hapus semua yang lain jika ada.

Danniel Little
sumber
0

Saya telah mengalami masalah yang sama. Jalankan SSMS sebagai administrator kemudian klik kanan dan lakukan pemulihan database. Harus bekerja

Jonny Boy
sumber
0

Saya pikir saya mendapatkan penghargaan untuk alasan paling sulit untuk mendapatkan kesalahan ini. Dalam dialog Pulihkan Database, dropdown database di bawah Sumber berwarna abu-abu dan saya pikir itu dinonaktifkan. Saya melewatkan ke dropdown database di bawah Tujuan berpikir itu adalah sumber dan membuat pilihan. Melakukan ini akan menyebabkan pesan kesalahan ini ditampilkan.

Gabe
sumber