Di chuyển từ SQL Server 2000 đến 2012 mà không có phiên bản 2005 hoặc 2008


11

Tôi đã bắt gặp ba cơ sở dữ liệu cũ trên SQL Server 2000 mà tôi cần chuyển sang năm 2012. Tôi tin rằng cách tiếp cận tiêu chuẩn là khôi phục vào phiên bản 2005 hoặc 2008, cập nhật, tái xuất và cuối cùng khôi phục vào năm 2012.

Tốt, ngoại trừ chúng tôi không có phiên bản 2005 hoặc 2008.

Có cách giải quyết nào khác hoặc các phương pháp khác có thể đáng để thử không?

Để biết thông tin, cơ sở dữ liệu chỉ chứa 15-20 bảng và một vài khung nhìn, chúng xuất hiện rất đơn giản và các bản sao lưu chỉ có kích thước 100-200MB.


1
Vì cơ sở dữ liệu của bạn nhỏ, bạn có thể tạo ra toàn bộ cơ sở dữ liệu - chỉ lược đồ (không có dữ liệu - sử dụng PowerShell hoặc SSMS) và sau đó sử dụng bcp OUT và chèn số lượng lớn . Khi bạn đã hoàn tất việc di chuyển dữ liệu, sau đó bạn có thể thực hiện theo các thực tiễn tốt nhất được nêu trong câu trả lời này
Kin Shah

1
nó là hoàn toàn hợp pháp và được bảo vệ trong việc cấp phép sql để cài đặt một thể hiện trung gian làm "cầu nối" để nâng cấp. không có người dùng nên kết nối với nó. ...
Rostol

Câu trả lời:


21

Không, không có cách giải quyết để nâng cấp cơ sở dữ liệu trực tiếp từ năm 2000 đến 2012.

Vì bạn không có rất nhiều dữ liệu, bạn có thể làm tất cả mọi thứ để di chuyển dữ liệu (nhưng không phải toàn bộ cơ sở dữ liệu), bao gồm:

  • Trình hướng dẫn nhập / xuất
  • SSIS
  • BCP
  • Truy vấn thủ công bằng máy chủ được liên kết từ năm 2012 hoặc ứng dụng

Tuy nhiên, những thứ này sẽ không nhất thiết mang lại những thứ khác như người dùng, quyền, vai trò, v.v. Và không phải mọi thứ sẽ tạo ra các đối tượng của bạn theo đúng thứ tự phụ thuộc. Vì vậy, họ làm việc nhiều hơn và dễ bị lỗi. Theo kinh nghiệm của tôi, sẽ chỉ đáng để tạm thời đưa ra một cá thể trung gian và sau đó thực hiện hai thao tác sao lưu + khôi phục - sẽ dễ dàng hơn, nhanh hơn và ít bị lỗi hơn bất kỳ phương pháp nào ở trên.

Nếu cơ sở dữ liệu của bạn nhỏ hơn 10GB, bạn có thể cài đặt một bản sao Express (miễn phí) trong vài phút và sử dụng nó. Bạn có thể tải 2008 R2 Express tại đây . Tôi không nghĩ rằng có bất kỳ tính năng Doanh nghiệp nào trong năm 2000 xung quanh cấu trúc cơ sở dữ liệu, v.v. sẽ chặn việc nâng cấp đó (mối quan tâm lớn hơn đối với các phiên bản hiện đại hơn).

Nếu cơ sở dữ liệu của bạn quá lớn so với Express, bạn sẽ có thể tìm Phiên bản dành cho nhà phát triển với giá 49 đô la trở lên (hoặc thậm chí rẻ hơn - tôi đã tìm thấy năm 2005 trên eBay với giá 37 đô la ) hoặc nếu bạn có đăng ký MSDN, bạn sẽ có thể nhận được bất kỳ SKU từ đó.

Hoặc bạn có thể thoát khỏi việc sử dụng Phiên bản Đánh giá, phiên bản vẫn được cung cấp để tải xuống cho các phiên bản cũ hơn (ví dụ: tôi tìm thấy 2008 ở đây ), tuy nhiên tôi không thể xác nhận tải xuống cho phiên bản đó vẫn hoạt động. .


Cảm ơn. Vì tốc độ internet ở đây rất kém nên tôi đã cố gắng tránh tải xuống, nhưng tôi đã tìm thấy các tệp nhị phân cài đặt năm 2005 nên tôi đoán đó sẽ là phương pháp nhanh nhất.
Lunatik

Không, thứ duy nhất thực sự hữu ích là năm 2008 nếu không bạn cũng sẽ cần 2010 từ năm 2005
Rostol

Bạn có chắc chắn @Rostol? sqlskills.com/bloss/paul/ trên
Adam Nofsinger 14/2/18

@AdamNofsinger Tôi sẽ nói chắc chắn 100%, tôi đã làm điều này rất nhiều lần (chúng tôi có một SQL 2000 cũ được sử dụng bởi một hệ thống cũ) và có mục đích xây dựng 2008 vm để khôi phục dữ liệu trước rồi sao lưu và khôi phục lại SQL 2016 ... Nhưng nếu Paul Randal nói khác ... nhưng hãy nhớ rằng phương pháp trực tiếp hoạt động từ năm 2005 trở lên. không cho 2000 và 2003 thẳng.
Rostol

6

Nói rằng không có cách giải quyết có vẻ hơi sớm.

Bạn nói rằng cơ sở dữ liệu của bạn chỉ chứa một vài bảng và dạng xem. Tại sao không xuất các bảng và lược đồ khung nhìn khi SQL tạo các câu lệnh và chạy chúng trên cơ sở dữ liệu đích của bạn? Sau đó, bạn cũng có thể xuất dữ liệu thực tế sang định dạng CSV và nhập chúng vào cơ sở dữ liệu đích hoặc thậm chí có thể viết một cái gì đó bằng C # / C ++ / etc để xuất / nhập dữ liệu thực tế.

Bạn sẽ không cần phải chi một xu cho các phiên bản SQL Server mới mà cuối cùng bạn không cần.


3
Và bao gồm tất cả các đối tượng khác, thủ tục lưu trữ, kích hoạt, chức năng, vv tất nhiên. Tương tự như vậy, có tiện ích BCP để sao chép dữ liệu từ và vào cơ sở dữ liệu.
RLF

1
Cảm ơn. Đó là điều mà tôi có thể hy vọng, nhưng DB quấy rối không phải là công việc hàng ngày của tôi và tôi không chắc chắn nếu có bất kỳ phụ thuộc hoặc cài đặt nào khác (quyền người dùng, v.v.) sẽ không được sao chép nếu tôi chỉ cần xuất các bảng, v.v.
Lunatik

4
Đủ công bằng, cập nhật câu trả lời của tôi. Vẫn nghĩ rằng một cách giải quyết là nhiều công việc hơn là chỉ đưa ra một cá thể tạm thời và thực hiện hai hoạt động sao lưu + khôi phục dễ dàng và không có lỗi đáng tin cậy. (Ngoài ra, điều này dường như không phải là về tiền , vì OP đã có nhị phân năm 2005 và cơ sở dữ liệu nhỏ nên có thể được di chuyển bằng SQL Express.)
Aaron Bertrand

3

Không, bạn không thể di chuyển nó trực tiếp từ năm 2000 đến 2012.

Những gì bạn có thể làm là cài đặt một phiên bản tạm thời của năm 2005 HOẶC 2008 oR 2008R2, khôi phục cơ sở dữ liệu 2000 tại đây. Sau khi hoàn thành, bây giờ bạn có thể nâng cấp từ phiên bản đã cài đặt bằng cách sao lưu cơ sở dữ liệu từ phiên bản đó và khôi phục vào máy chủ sql 2012.

Bạn sẽ phải thực hiện di chuyển theo hai bước:

  • Bước 1: Thực hiện di chuyển đầu tiên từ SQL 2000 sang SQL 2008 chẳng hạn. Bạn cần phải là SQL 2000 SP4, sau đó làm theo bước này: Di chuyển SQL Server 2000 sang SQL Server 2008

  • Bước 2: Thực hiện di chuyển thứ hai từ SQL Server 2008 đến 2012.


0

Bạn nói rằng bạn "đã bắt gặp ba cơ sở dữ liệu cũ trên SQL Server 2000", điều này khiến tôi tin rằng bạn chỉ cần dữ liệu. Tôi đoán rằng nếu họ đang được điều hành cho một mục đích, bạn sẽ biết. Nếu đây là trường hợp, bỏ qua tất cả các câu hỏi của người dùng, bảo mật, vv

Trình hướng dẫn Nhập / Xuất tất cả các bảng Tập lệnh các thủ tục và khung nhìn được lưu trữ Kiểm tra các kế hoạch bảo trì và công việc đại lý chỉ đơn giản là ghi lại các quy trình mà bạn có thể muốn xem xét sau này.


0

Bạn không thể di chuyển trực tiếp từ SQL Server 2000 sang SQL Server 2012 và nếu bạn cố gắng thực hiện, bạn sẽ nhận được số lỗi sau 3169, có liên quan đến các vấn đề tương thích.

Việc di chuyển sang SQL Server 2012 có thể được thực hiện từ một trong các phiên bản sau (phiên bản tối thiểu) SQL Server 2005 SP4 hoặc SQL Server 2008 SP2 hoặc SQL Server 2008 R2 SP1.

Vì vậy, bước đầu tiên để di chuyển từ SQL Server 2000 sang một trong những phiên bản đó, tôi đã tìm thấy một trong những Cố vấn nâng cấp cho SQL Server 2008 trong liên kết sau . Để đảm bảo mọi thứ sẽ hoạt động trơn tru trước khi bắt đầu quá trình khôi phục, bạn cần chạy ứng dụng. Sau đó "Khởi chạy Trình hướng dẫn Phân tích Cố vấn Nâng cấp" và làm theo các bước của trình hướng dẫn.

Sau khi nhận được báo cáo, bạn cần khôi phục cơ sở dữ liệu trên SQL Server 2005 SP4 hoặc SQL Server 2008 SP2 hoặc SQL Server 2008 R2 SP1 và chạy mức độ tương thích trên nó (bạn có thể tìm thấy nó trên tùy chọn cơ sở dữ liệu). Đối với thông tin đăng nhập SQL Server, vui lòng làm theo hướng dẫn trong liên kết sau .

Khi hoàn thành, bây giờ bạn cần di chuyển sang SQL Server 2012 bằng cách lặp lại các bước tương tự từ máy chủ mà bạn đã thực hiện lần di chuyển đầu tiên.


0

Đầu tiên tôi đồng ý bạn không nên di chuyển trực tiếp từ năm 2000 đến 2012. Tôi nghĩ rằng quá trình đó đã được bảo hiểm tốt. Tôi muốn đề nghị bạn tìm hiểu xem có ai đang sử dụng cơ sở dữ liệu không và họ đang sử dụng chúng để làm gì. Nó có thể là họ không được sử dụng. Nó xảy ra và nếu đó là trường hợp thì bạn không phải lo lắng. Có thể việc thêm 2 hoặc 3 bảng và dữ liệu (cho 2000 sử dụng bcp nếu bạn muốn lấy dữ liệu cho một bảng riêng lẻ và đơn giản) vào cơ sở dữ liệu 2012 sẽ phục vụ nhu cầu của người dùng. Nếu bạn làm điều đó sau đó tạo các bảng mới trong cơ sở dữ liệu năm 2012 và bcp ra dữ liệu bạn cần để csv, bạn có thể bcp nó trở lại nếu bạn muốn. Nếu bạn phải di chuyển nhiều hơn một hoặc hai bảng thì cách đơn giản nhất và an toàn nhất và tốt nhất là thực hiện di chuyển hai bước. Đừng '


Bạn nên biết rằng kịch bản lược đồ năm 2000 không chính xác 100%. Tôi nhớ luôn phải chỉnh sửa kịch bản.
dkh63493
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.