gia đình truyền thông trên thiết bị được hình thành không chính xác. SQL Server không thể xử lý họ phương tiện truyền thông này


31

Tôi đang cố gắng khôi phục .BAK trong máy chủ SQL nhưng gặp lỗi sau:

Msg 3241, Cấp 16, Bang 7, Dòng 1 Gia đình truyền thông trên thiết bị 'c: \ glyn \ JA.bak' được hình thành không chính xác. SQL Server không thể xử lý họ phương tiện truyền thông này. Msg 3013, Cấp 16, Bang 1, Dòng 1 RESTORE DATABASE đang chấm dứt bất thường.

Tôi đã thử khôi phục bằng 2012, 2008 và thậm chí 2005 nhưng không có gì hoạt động, tôi đã sử dụng truy vấn sau và thông qua Tasks >> Back upnhưng không có gì hoạt động, đây là SQL của tôi:

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

Có ai có bất cứ đề nghị? Tôi đã đọc rằng bak có thể bị hỏng, nó được gửi cho tôi bởi một nhà phát triển khác trên DVD, người đang làm việc trong dự án.


Tôi đã tìm thấy giải pháp tại sqlbak.com/blog/media-family-on-device-is-inc chính xác

Câu trả lời:


12

Nếu bạn đang cố gắng khôi phục cơ sở dữ liệu mới hơn sang phiên bản SQL cũ hơn, bạn luôn có thể tạo cơ sở dữ liệu theo cách thủ công trong phiên bản SQL cũ hơn và sử dụng tác vụ - tạo tập lệnh và bao gồm dữ liệu.

Lưu vào tệp -> Nâng cao -> Loại dữ liệu vào tập lệnh -> Lược đồ và dữ liệu .

Cũng đảm bảo Script cho phiên bản máy chủ .

Đây có thể là tùy chọn được hỗ trợ duy nhất nếu bạn đang cố gắng chuyển từ SQL Server mới hơn sang phiên bản cũ hơn.

Liên quan: Khôi phục bản sao lưu SQL Server 2012 vào cơ sở dữ liệu SQL Server 2008?


Có vẻ như một hack nhưng tôi đoán điều này đã giải quyết vấn đề này trong trường hợp của tôi.
jpierson

7

Tôi thấy điều này nói rằng tập tin sao lưu của bạn là hỏng. Có thể được chuyển bởi FTP ở chế độ văn bản chứ không phải nhị phân.

blog này liệt kê cách người khác khắc phục vấn đề tương tự.


8
"Liệt kê cách người khác khắc phục vấn đề tương tự" nói chung trên các trang mạng SE, bạn nên đăng các bit có liên quan của những thứ như bài đăng trên blog; nó ngăn chặn sự phân rã liên kết
jcollum

6

Tôi có cùng một vấn đề, kịch bản của tôi đã chỉ định loại FILE không chính xác, tôi đã có một .bakvà tôi đã chỉ định FILE = 2đó là một .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

Tôi không chắc nếu lệnh RESTORE tự động phát hiện hoặc đặt mặc định cho ...


1
Lỗi xoay quanh vấn đề này, vấn đề là khi bạn sử dụng GUI để khôi phục cơ sở dữ liệu, SQL Management Studio không cung cấp cho bạn thông tin chi tiết. Nếu bạn cố gắng khôi phục bằng tập lệnh t-sql, máy chủ sql sẽ báo cáo bạn sử dụng tùy chọn MOVE.
dlopezgonzalez

5

Chạy đoạn mã sau trên Máy chủ SQL nguồn và đích, các phiên bản phải khớp hoặc đích sẽ có phiên bản SQL Server cao hơn nếu không bạn không thể khôi phục tệp .bak:

SELECT @@Version

1
Điểm về các phiên bản đã được lặp lại trong các câu trả lời khác.
Andriy M

1
@AndriyM bạn đúng, nhưng một hành động thực tế đã bị thiếu. Chúng tôi không nói về lịch sử hoặc địa lý, một số lệnh hoặc mã nên được đề cập.
Shadi Namrouti


-4

xóa tập tin bị hỏng và chạy lại bản sao lưu


4
Xin chào, Chào mừng đến với trang web. Chúng tôi muốn biết thêm một chút chi tiết về lý do tại sao hoặc làm thế nào điều này sẽ hoạt động.
Tom V - Đội bóng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.