2009-11-16 72 views
5

Tôi phải di chuyển toàn bộ cơ sở dữ liệu từ máy SQL Server 2008 sang máy SQL Server 2000.Khôi phục cơ sở dữ liệu SQL Server 2008 sang SQL Server 2000

Tôi đã tạo bản sao lưu bằng Management Studio 2008, sao chép nó vào ổ cứng của hộp 2000 và từ cùng với Management Studio 2008, tôi chọn Khôi phục cơ sở dữ liệu vào hộp 2000.

Tôi nhận được thông báo lỗi cho biết: "Họ phương tiện trên thiết bị ... được định dạng không chính xác. Máy chủ SQL không thể khôi phục nhóm phương tiện này".

Nếu tôi sử dụng Enterprise Manager 2000 tôi gặp lỗi tương tự.

Có cách nào để di chuyển toàn bộ cơ sở dữ liệu từ máy chủ SQL mới hơn sang máy chủ cũ hơn không?

Trả lời

10

Điều duy nhất tôi có thể nghĩ là tạo lại toàn bộ cấu trúc và sau đó sao chép dữ liệu từ cơ sở dữ liệu trực tiếp. Vì vậy, tạo các kịch bản lệnh sẽ tạo ra các bảng, các khung nhìn và của sp, sau đó tạo các kịch bản lệnh để sao chép dữ liệu từ cơ sở dữ liệu hiện có.

+1

Tôi vừa hoàn thành việc này. Cách duy nhất tôi tìm thấy để làm điều đó là để kịch bản toàn bộ cơ sở dữ liệu (bao gồm cả dữ liệu) và chạy kịch bản trên máy mục tiêu. Bây giờ, đây là một nỗi đau, bởi vì DB 2008 có thể tạo ra một kịch bản sẽ không chạy vào năm 2000 (tốt, tôi đã làm), do đó bạn sẽ cần phải chỉnh sửa kịch bản được tạo trước khi chạy vào năm 2000. Cổ phiếu trên Tylenol trước khi bạn bắt đầu. Chúc may mắn. – BoltBait

+4

Vâng, đó là cách duy nhất để làm điều đó. SQL Server chưa bao giờ tương thích ngược, ví dụ: bạn chưa bao giờ có thể khôi phục phiên bản mới hơn cho máy chủ cũ hơn. Tôi không nghĩ rằng điều này có khả năng thay đổi –

0

Tôi đã nghe bạn chỉ có thể thực hiện việc đó bằng cách tạo kết xuất câu lệnh SQL từ công cụ quản trị viên DB và chạy lại các truy vấn đó trên cơ sở dữ liệu cũ hơn mục tiêu.

+1

Tất nhiên bạn sẽ phải thao tác với họ như là công cụ kịch bản đặt trong những điều mà năm 2000 sẽ không nhận ra. – HLGEM

1

bạn không thể di chuyển bản sao lưu từ phiên bản mới sang cũ hơn, trong trường hợp đó bạn có thể tạo cơ sở dữ liệu, thực thi trong hộp 2000, sau đó bạn có thể sử dụng truyền dữ liệu chuẩn để chuyển bất kỳ dữ liệu nào bạn muốn

0

Bạn có thể tạo tập lệnh sẽ tạo lại tất cả các đối tượng và chuyển tất cả dữ liệu ... miễn là mọi thứ trong db hợp lệ trong SQL 2000. Vì vậy, không có ROW_NUMBER(), không có PARTITION, không có CTE, không có datetime2, phân cấp hoặc một số loại trường khác, không có EXECUTE AS và rất nhiều sự tốt lành khác. Về cơ bản, có một cơ hội khá tốt nó không thể trừ khi db của bạn là khá cơ bản.

1

Miễn là bạn có kết nối mạng giữa các máy sử dụng SSIS. Dễ dàng hơn nhiều và ít lộn xộn hơn nhiều.

1

Bạn có thể sử dụng Script Generator cho cơ sở dữ liệu của bạn và sau đó chọn trong các thuộc tính hình: General-> Script cho phiên bản máy chủ: SQL Server 2000.

Các máy phát điện kịch bản sẽ cho bạn thấy điều đó không tương thích với phiên bản máy chủ của bạn .

2

Như những người khác đã nói không có cách nào mặc định để thực hiện việc này. Nó không được hỗ trợ. Dưới đây là các chi tiết mở rộng hơn về cách thực hiện điều này đúng cách và tránh mọi sự cố di chuyển.

Bạn cần tạo tập lệnh cho cấu trúc và dữ liệu và sau đó thực hiện các lệnh này trên SQL 2000 (như những người khác đã nói) nhưng có vài điều cần tính đến.

Tạo script trong SSMS

  • Hãy chắc chắn để kiểm tra tùy chọn cho dữ liệu kịch bản cho SQL 2000 để tránh các vấn đề khi cố gắng tạo một cái gì đó như kiểu địa lý cột trên SQL 2000.
  • Hãy chắc chắn để xem xét để thực hiện các kịch bản để tránh sự phụ thuộc dựa lỗi

Đây là một lựa chọn tuyệt vời cho vừa và nhỏ cơ sở dữ liệu quy mô và đòi hỏi một số kiến ​​thức về SQL Server (phụ thuộc, sự khác biệt giữa các phiên bản và như vậy)

công cụ của bên thứ ba

  • Idea là sử dụng các công cụ của bên thứ ba cơ sở dữ liệu so sánh như ApexSQL Diff hoặc Data Diff
  • Tốt bên là những sẽ chăm sóc thực hiện kịch bản và sự khác biệt giữa các phiên bản
  • Không tốt như vậy là thực tế là bạn sẽ cần phải trả tiền cho những sau khi phiên tòa kết thúc
  • Tôi đã sử dụng hai công cụ này thành công nhưng bạn không thể đi sai với bất kỳ công cụ nào khác trên thị trường. Here là danh sách các công cụ khác trong danh mục này.
0

Chúng tôi có tình huống tương tự. Một rất thấp-tech nhưng giải pháp tiện dụng là:

  1. sao lưu và cắt xén các bảng trong SQL 2000.
  2. tạo một máy chủ được liên kết trong SQL 2008, trỏ đến SQL 2000
  3. chạy một truy vấn chọn ở sysobjects để tạo tập lệnh truy vấn cho insert into LINKED SERVER.table select * from table
  4. thực thi tập lệnh truy vấn.
Các vấn đề liên quan