Saya menggunakan SQL Server 2008 R2 Standard (versi 10.50.1600.1) untuk situs web produksi saya dan edisi SQL Server Express dengan Layanan Lanjutan (v10.50.1600.1) untuk localhost saya sebagai database.
Beberapa hari yang lalu SQL Server saya mengalami crash dan saya harus menginstal versi 2008 R2 Express baru di localhost saya. Ini berfungsi dengan baik ketika saya memulihkan beberapa versi lama yang diambil dari edisi Express tetapi ketika saya mencoba memulihkan database dari .bak
file yang diambil dari server produksi, itu menyebabkan kesalahan berikut:
Kesalahan: Pemeran yang ditentukan tidak valid. (SqlManagerUI)
dan ketika saya mencoba mengembalikan database menggunakan perintah
Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications.bak'
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
Ini menghasilkan kesalahan yang berbeda
Psn 3154, Level 16, Status 4, Baris 1
Kumpulan cadangan menyimpan cadangan database selain database 'Publikasi' yang ada.
Msg 3013, Level 16, Status 1, Baris 1
PULIHKAN DATABASE berhenti secara tidak normal.
Saya telah memeriksa ulang versinya. Mereka semua tampak cocok bagi saya seperti yang ditunjukkan pada gambar di bawah
Sebelumnya saya dapat memulihkan database dari versi standar ke edisi ekspres tetapi sekarang gagal. Saya menghapus database dan mencoba membuatnya kembali. Itu juga gagal.
Saya tidak yakin apa yang saya lakukan salah. Saya sangat menghargai bantuan dalam hal ini
Masalah teratasi karena tampaknya file .bak rusak. Ketika saya mencobanya dengan file yang berbeda, itu berhasil.
,REPLACE
ke perintah T-SQL untuk menimpa database AlHabtoorPublications yang sudah ada.Jawaban:
GUI terkadang berubah-ubah. Kesalahan yang Anda dapatkan saat menggunakan T-SQL adalah karena Anda mencoba untuk menimpa database yang sudah ada, tetapi tidak menentukan untuk menimpa / mengganti database yang sudah ada. Berikut ini mungkin berhasil:
Use Master Go RESTORE DATABASE Publications FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak' WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf' , REPLACE -- Add REPLACE to specify the existing database which should be overwritten.
sumber
, REPLACE
Failed: 38
menunjukkanreached end of the file
. (Di jendela perintah, jalankanNET HELPMSG 38
). Itu biasanya menunjukkan cadangan yang rusak: stackoverflow.com/questions/5656363/…Bisa jadi karena memulihkan file cadangan versi SQL Server 2012 ke SQL Server 2008 R2 atau bahkan kurang.
sumber
Akhirnya mendapat kesalahan ini untuk pergi pada pemulihan. Saya pindah ke SQL2012 karena frustrasi, tetapi saya rasa ini mungkin masih berfungsi pada 2008R2. Saya harus menggunakan nama logis:
RESTORE FILELISTONLY FROM DISK = ‘location of your.bak file’
Dan dari sana saya menjalankan pernyataan pemulihan dengan
MOVE
menggunakan nama logis.RESTORE DATABASE database1 FROM DISK = '\\database path\database.bak' WITH MOVE 'File_Data' TO 'E:\location\database.mdf', MOVE 'File_DOCS' TO 'E:\location\database_1.ndf', MOVE 'file' TO 'E:\location\database_2.ndf', MOVE 'file' TO 'E:\location\database_3.ndf', MOVE 'file_Log' TO 'E:\location\database.ldf'
Setelah selesai memulihkan, saya hampir menangis karena gembira.
Semoga berhasil!
sumber
Berikut adalah 2 alasan untuk masalah ini:
Pencadangan diambil pada SQL 2012 dan Pulihkan Headerhanya dilakukan di SQL 2008 R2
Media cadangan rusak.
Jika kami menjalankan perintah di bawah ini, kami selalu menemukan kesalahan aktual:
restore headeronly from disk = 'C:\Users\Public\Database.bak'
Berikan lokasi lengkap file database Anda di quot
Semoga membantu
sumber