SQL Server khôi phục kết quả sao lưu bị lỗi


15

Tôi có một cơ sở dữ liệu trong dev (SQL Server 2005 trên Windows Server 2008) mà tôi cần chuyển sang prod (SQL Server 2000 trên Windows Server 2003). Quá trình của tôi như sau:

  1. Đăng nhập vào dev, mở SQL Server Management Studio
  2. Nhấp chuột phải vào cơ sở dữ liệu | Nhiệm vụ | Sao lưu. Giữ tất cả các tùy chọn mặc định (sao lưu đầy đủ, v.v.)
  3. Di chuyển tệp .bak cục bộ sang prod (không có ổ đĩa mạng), đăng nhập vào prod, mở SQL Server Enterprise Manager.
  4. Nhấp chuột phải vào nút Cơ sở dữ liệu | Tất cả các nhiệm vụ | Khôi phục cơ sở dữ liệu.
  5. Thay đổi Khôi phục dưới dạng cơ sở dữ liệu để phản ánh cùng tên cơ sở dữ liệu.
  6. Nhấp vào nút radio 'Từ thiết bị'. Nhấp vào 'Chọn thiết bị'
  7. Nhấp vào Khôi phục từ: Thêm ..., duyệt đến tệp .bak (nhỏ - chỉ 6mb)

Bây giờ tôi đã sẵn sàng để khôi phục cơ sở dữ liệu, vì vậy tôi nhấp vào OK và nhận được lỗi sau:

"Họ phương tiện trên thiết bị 'E: ... bak' được hình thành không chính xác. Máy chủ SQL không thể xử lý họ phương tiện này. RESTORE DATABASE đang chấm dứt bất thường."

Lỗi này là ngay lập tức.

Tôi đã thử một vài biến thể khác nhau của việc này - khôi phục máy db thành dev với tên db và tên tệp nhật ký khác nhau (nơi nó bắt nguồn), tạo một cơ sở dữ liệu trống có cùng đường dẫn vật lý đến các tệp trước đó và cố gắng khôi phục lại, tạo một vài tệp .bak khác nhau và đảm bảo rằng chúng được xác minh trước khi tải chúng lên prod. Tôi biết thực tế thư mục cho các tệp .mdf và .ldf tồn tại trên prod, mặc dù các tệp không tồn tại. Nếu, trước khi tôi nhấp OK để khôi phục, hãy chuyển đến tab tùy chọn thay vì tôi gặp lỗi sau:

Lỗi 3241: Họ phương tiện trên thiết bị 'E: ... 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. RESTORE FILELIST đang chấm dứt bất thường.

Bất cứ ai có bất kỳ ý tưởng tươi sáng?


Tôi đồng ý, chỉ dành một ngày cho việc này và lãng phí thời gian của tôi, nó có vẻ như là một vấn đề tương thích ngược, 2k8 R2 đến 2k5 trong trường hợp của tôi.

Câu trả lời:


7

Các tiêu đề sao lưu trong MSSQL2008 khác với các tiêu đề trong MSSQL2005, có khả năng là nguồn gốc của vấn đề của bạn. Hãy thử xuất DB thay vì mô hình khôi phục sao lưu hoặc thiết lập MSSQL2008 trên máy chủ DEV của bạn.


4

Như Mike Dimmick nói - SQL 2000 sẽ không nhận ra các bản sao lưu SQL 2005 (như Word 2000 sẽ không nhận ra các tệp DOCX của 2007). Do đó, bạn sẽ phải di chuyển dữ liệu của mình theo định dạng mẫu số chung thấp hơn, chẳng hạn như tập lệnh SQL. Hãy dùng thử Trình hướng dẫn xuất bản cơ sở dữ liệu , một phần của Bộ công cụ lưu trữ máy chủ SQL để tạo một tệp SQL duy nhất cho cả lược đồ và dữ liệu.


1
Điều quan trọng là kiểm tra xem bạn đã cài đặt SqlExpress chưa (bạn có thể đã cài đặt nó mà không nhận ra mình có nó). Rất dễ dàng đăng nhập vào SqlExpress và sau đó hoảng loạn vì nó sẽ không cho phép bạn khôi phục cơ sở dữ liệu 2008 cho nó. Đây có lẽ là một lý do rất phổ biến để nhận được lỗi này.
Simon

2

Bạn có thể di chuyển các bản sao lưu chuyển tiếp trong họ SQL Server, tức là 2000 đến 2005 hoặc 2008, nhưng không được lùi: bạn không thể khôi phục bản sao lưu SQL Server 2005 trên SQL Server 2000.


1

Có thể đó là vấn đề về quyền giữ cho tệp không được tạo khi bạn cố gắng khôi phục. Hãy thử tạo một cơ sở dữ liệu mới trên mục tiêu có cùng tên mà bạn muốn và sau đó khôi phục lại trên đỉnh của nó.

Ngoài ra, nếu bạn đang cố gắng khôi phục bản sao lưu từ ổ cứng ngoài hoặc chia sẻ mạng, hãy thử sao chép tệp sao lưu vào máy cục bộ trước khi thử khôi phục.


1

Theo mặc định, có hai trình thám hiểm đối tượng từ SQL Server 2005. Tôi đoán bạn đang thử đối tượng máy chủ / sqlexpress. Cố gắng khôi phục lại một cái khác.


1

(Thở dài nhẹ nhõm.) Ahhhhh, đó là vấn đề.

Tôi có SQL Server 2008 SP1 chạy trên PC từ xa. Tôi đã sao lưu cơ sở dữ liệu của nó, nhưng không thể lấy bản sao SQL Server 2008 cục bộ của mình để khôi phục từ tệp .bak.

Như [Yini] nói, đây là bản sao của SQL Server 2008 mở phiên bản SQL Server 2005 của tôi trên PC cục bộ, thay vì phiên bản SQL Server 2008 của tôi. Thiên tài.

Và tôi hoàn toàn đồng ý với [Yini] - đủ công bằng, bạn không thể khôi phục bản sao lưu SQL Server 2008 thành phiên bản 2005, nhưng ít nhất Microsoft có thể cung cấp cho chúng tôi một thông báo lỗi khá.

"Họ phương tiện trên thiết bị 'D: \ DatabaseBackup_21_02_2011.bak' được hình thành không chính xác. SQL Server không thể xử lý họ phương tiện này."

Sao lưu của tôi không được hình thành không chính xác. Nó không thể được khôi phục thành phiên bản SQL Server 2005 , ngay cả khi tôi đang chạy SQL Server 2008 SP1.

Có thực sự khó khăn khi đưa thông tin này vào một thông báo lỗi ............?


0

Một vài suy nghĩ:

  • Cơ sở dữ liệu bạn đang khôi phục có kích thước bao nhiêu? Bài viết hỗ trợ
    duy nhất về lỗi này là dành cho SQL 2000 và nói về các tệp nhật ký lớn. Mặc dù bạn không sử dụng SQL 2000 nhưng trước tiên, có thể giúp giảm kích thước nhật ký nếu chúng đặc biệt lớn.

  • Bạn có thể khôi phục cơ sở dữ liệu trên máy chủ Dev của mình (dưới dạng tên db khác nhau, cho các tệp khác nhau) không? Điều đó sẽ chứng minh liệu bản thân tệp có ổn hay không liên quan đến SQL 2005.

  • Bạn có thể khôi phục bất kỳ cơ sở dữ liệu nào khác từ máy chủ Dev đó sang Prod không?


0

Xin chào mọi người, như Mike gợi ý tôi muốn giới thiệu Trình hướng dẫn xuất bản cơ sở dữ liệu, đây là một công việc tuyệt vời.

Đây là một cách giải quyết ban đầu tôi đã sử dụng mà tôi hoàn toàn không đề xuất - có vẻ hơi ghetto .


1) Tạo db trên prod, tạo người dùng db có quyền thích hợp, mở cổng trên tường lửa cho phép truy cập từ xa
2) Từ nhà phát triển trong SQL Server Management Studio, nhấp chuột phải vào db -> tác vụ -> xuất dữ liệu. Khi chọn đích, hãy đảm bảo chỉ định cổng xxx.xxx.xxx.xxx, 1764.
3) Chọn tất cả các bảng để chuyển, nhấp vào 100 lần tiếp theo và bạn đã hoàn tất.

CẢNH BÁO: Điều này không sao chép các thủ tục được lưu trữ.
CẢNH BÁO: Điều này không sao chép trên Danh tính cho các cột int

CẬP NHẬT: Có vẻ như bạn không thể đi từ năm 2005 đến 2000. Tôi đã tìm thấy văn bản liên kết bài đăng sau đây - có vẻ như bạn có thể sử dụng các phương pháp của tôi ở trên, nhưng bạn cũng muốn kịch bản tất cả các đối tượng và sau đó chạy nó vào năm 2000.

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.