Sử dụng phiên bản cũ hơn của cơ sở dữ liệu SQL Server với năm 2012?


7

Chúng tôi đã được yêu cầu chuyển từ SQL Server 2008 R2 sang năm 2012, quá trình cài đặt đã hoàn tất vài giờ trước. Kể từ khi tôi cố gắng đính kèm cơ sở dữ liệu từ năm 2008 đến năm 2012.

Nó dường như không có hiệu lực. Thông báo lỗi dưới đây:

Đính kèm cơ sở dữ liệu không thành công cho Máy chủ 'Phát triển \ SQLSERVER'. (Microsoft.SqlServer.Smo)
Cơ sở dữ liệu 'PS_EmpData' không thể được nâng cấp vì phiên bản không phát hành (539) không được phiên bản SQL Server này hỗ trợ. Bạn không thể mở cơ sở dữ liệu không tương thích với phiên bản sqlservr.exe này. Bạn phải tạo lại cơ sở dữ liệu.

Ý tôi là, bảng này là một cơ sở dữ liệu lớn; và thời gian cần thiết để tạo lại với tất cả các phần chèn sẽ là không thực. Chúng tôi vẫn đang hoạt động với SQL 2008 R2 để sản xuất, nhưng quá trình phát triển đang được tiến hành vào năm 2012.

Câu hỏi chung của tôi là, chúng ta có phải tạo lại cơ sở dữ liệu để sử dụng năm 2012 hay có một công việc nào đó không?

Câu trả lời:


7

Phiên bản (539) được chỉ định trong thông báo lỗi nói rằng cơ sở dữ liệu này là cơ sở dữ liệu Sql Server 2000 và do đó không được hỗ trợ trong Sql Server 2012 Xem tại đây

Có lẽ trong SqlServer 2008R2 của bạn, cơ sở dữ liệu cụ thể này có cấp độ tương thích được đặt thành Sql Server 2000. Bạn có thể thử thay đổi cấp độ này thành các thuộc tính của cơ sở dữ liệu, trang Tùy chọn và thay đổi cấp độ tương thích thành 2008, sau đó thử lại để gắn cơ sở dữ liệu vào Máy chủ Sql 2012


3
Tôi cũng viết blog về điều này ở đây: sqlblog.com/bloss/aaron_bertrand/archive/2010/11/18/ Kẻ
Aaron Bertrand

3

Mọi thứ không thêm vào. Cơ sở dữ liệu là từ SQL 2008, và sau đó sẽ là phiên bản 655 (hoặc 661 nếu là SQL Server 2008 R2) hoặc cơ sở dữ liệu là phiên bản 539, về cơ bản là phiên bản antediluvian. Tôi thực sự tin rằng trường phiên bản cơ sở dữ liệu thực sự bị hỏng trong tệp (ví dụ: nó đã bị thay đổi trong bản sao tệp). Đảm bảo tệp giống hệt với tệp nguồn từ phiên bản SQL 2008 của bạn.


Tôi đồng ý. Nếu cơ sở dữ liệu 2000 được đính kèm / khôi phục vào phiên bản R2 2008/2008, phiên bản của nó sẽ không còn là 539 (ngay cả khi nó vẫn ở chế độ tương thích 80/2000). Tôi tự hỏi nếu sao lưu nguồn hoặc tệp mdf từ năm 2000, được sử dụng để tạo cơ sở dữ liệu trên 2008/2008 R2, cũng được sử dụng để tạo cơ sở dữ liệu vào năm 2012 (trái ngược với bản sao lưu hoặc tách rời của tệp mdf từ năm 2008 / 2008 R2). Nó cũng tò mò rằng đó là một hoạt động đính kèm trái ngược với hoạt động khôi phục ...
Aaron Bertrand

3

Phiên bản cơ sở dữ liệu nội bộ 539 là từ SQL 2000. 2012 có thể không hỗ trợ trực tiếp từ phiên bản đó - nhưng, vì bạn có máy chủ 2008 R2, trước tiên bạn có thể có một số tùy chọn để nâng cấp db trên máy chủ đó.

Nếu bạn có đủ dung lượng trên máy chủ 2008 R2 cho một bản sao khác của db, hãy lấy một cái ở đó, sau đó thử đặt mức độ tương thích thành 100 (2008 R2), sau đó tách ra và đính kèm lại. Việc nâng cấp phiên bản cơ sở dữ liệu nội bộ thường diễn ra trong quá trình đính kèm (hoặc khôi phục).

Tôi tình cờ có 2000 / 2008R2 / 2012 được triển khai, vì vậy tôi sẽ thực hiện một thử nghiệm nhanh và đảm bảo các công việc trên.

Chỉnh sửa: Lấy bản sao lưu từ máy chủ 2000 của tôi và khôi phục máy chủ 2008 R2 tự động nâng cấp phiên bản cơ sở dữ liệu nội bộ lên 661 (2008 R2), mặc dù mức độ tương thích được đặt thành 80 (SQL 2000). Tôi không chắc chắn làm thế nào bạn kết thúc với v539 db trên 2008 R2, nhưng hãy thử đính kèm / tách trên một bản sao của nó sau khi sửa đổi mức độ tương thích và kiểm tra phiên bản nội bộ bằng cách sử dụng (từ bài đăng trên blog của Jonathan Kehayias tại đây ):

DBCC TRACEON (3604);  
GO 
DBCC PAGE (ExampleDB, 1, 9, 3); 
GO 
DBCC TRACEOFF (3604);

Một nơi nào đó trong đầu ra phải là một chỉ số của số phiên bản nội bộ:

dbi_version = 655 
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.