keluarga media pada perangkat tidak terbentuk dengan benar. SQL Server tidak dapat memproses keluarga media ini

31

Saya mencoba mengembalikan .BAK di SQL server tetapi mendapatkan kesalahan berikut:

Msg 3241, Level 16, Negara 7, Baris 1 Keluarga media pada perangkat 'c: \ glyn \ JA.bak' salah terbentuk. SQL Server tidak dapat memproses keluarga media ini. Msg 3013, Level 16, Status 1, Baris 1 KEMBALIKAN DATABASE berakhir secara tidak normal.

Saya telah mencoba memulihkan menggunakan 2012, 2008 dan bahkan 2005 tetapi tidak ada yang berhasil, saya telah menggunakan permintaan berikut dan melalui Tasks >> Back uptetapi tidak ada yang berhasil, inilah SQL saya:

RESTORE DATABASE JA FROM DISK='c:\glyn\JA.bak'

Adakah yang punya saran? Saya pernah membaca bahwa bak itu bisa rusak, dikirim ke saya oleh pengembang lain di DVD yang sedang mengerjakan proyek.

Funky
sumber

Jawaban:

12

Jika Anda mencoba untuk mengembalikan database yang lebih baru ke versi SQL yang lebih lama, Anda selalu dapat secara sederhana membuat database dalam versi SQL yang lebih lama dan memanfaatkan tugas - menghasilkan skrip dan memasukkan data.

Simpan ke File -> Lanjutan -> Jenis data ke skrip -> Skema dan data .

Pastikan juga untuk Script untuk Versi Server .

Ini mungkin satu-satunya opsi yang didukung jika Anda mencoba beralih dari SQL Server yang lebih baru ke versi yang lebih lama.

Terkait: Kembalikan cadangan SQL Server 2012 ke database SQL Server 2008?

A. Thomas
sumber
Sepertinya peretasan tapi saya kira ini mengatasi masalah ini dalam kasus saya.
jpierson
7

Saya menemukan ini yang mengatakan bahwa file cadangan Anda rusak. Kemungkinan ditransfer dengan FTP dalam mode teks daripada biner.

Dan blog ini yang mencantumkan bagaimana orang lain memperbaiki masalah yang sama.

Kenneth Fisher
sumber
8
"daftar bagaimana orang lain memperbaiki masalah yang sama" umumnya di situs jaringan SE Anda harus memposting bit yang relevan dari hal-hal seperti posting blog; itu mencegah pembusukan tautan
jcollum
6

Saya memiliki masalah yang sama, skrip saya menentukan jenis FILE yang salah, saya punya .bakdan saya menentukan FILE = 2yang a .trn.

USE [master]
RESTORE DATABASE [MyNewDB] FROM
DISK = N'D:\MyOldDB.bak'
WITH
    FILE = 1, -- 1 = .bak, 2 = .trn type backup
    MOVE N'MyOldDB' TO N'd:\data\MyOldDB.mdf',
    MOVE N'MyOldDB_log' TO N'd:\data\MyOldDB_log.ldf',
    NOUNLOAD,
    STATS = 5    
GO

Saya tidak yakin apakah perintah RESTORE mendeteksi atau menetapkan default untuk ini ...

sonjz
sumber
1
Kesalahan berbalik ini, masalahnya adalah ketika Anda menggunakan GUI untuk mengembalikan database, SQL Managment Studio tidak memberikan Anda informasi terperinci. Jika Anda mencoba memulihkan menggunakan skrip t-sql, server sql akan melaporkan Anda untuk menggunakan opsi MOVE.
dlopezgonzalez
5

Jalankan skrip berikut pada sumber dan tujuan SQL Server, versi harus cocok atau tujuan harus memiliki versi SQL Server yang lebih tinggi jika tidak, Anda tidak dapat mengembalikan file .bak:

SELECT @@Version
Shadi Namrouti
sumber
1
Poin tentang versi telah diulang dalam jawaban lain.
Andriy M
1
@ AndriyM Anda benar, tetapi tindakan praktis tidak ada. Kami tidak berbicara tentang sejarah atau geografi, beberapa perintah atau kode harus disebutkan.
Shadi Namrouti
-4

hapus file yang rusak dan jalankan kembali cadangan

ibumu
sumber
4
Hai, Selamat datang di situs ini. Kami suka sedikit lebih detail tentang bagaimana mengapa atau bagaimana ini bekerja.
Tom V - Team Monica