Ý nghĩa của việc thay đổi chế độ tương thích trong SQL Server từ 100 đến 110


16

Tôi có một cơ sở dữ liệu Mydatabaseđược tạo trong SQL Server 2008 R2. Tôi đã nâng cấp lên SQL Server 2012.

Tôi đã cố gắng thực hiện truy vấn dưới đây để tính phần trăm

select Distinct [KEY],PERCENTILE_CONT(0.25)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q1,PERCENTILE_CONT(0.50)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q2,
PERCENTILE_CONT(0.75)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q3,
PERCENTILE_CONT(1)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q4
from Mydatabase

nhưng tôi nhận được một lỗi nói rằng

Msg 10762, Cấp 15, Trạng thái 1, Dòng 1
Chức năng PERCENTILE_CONT không được phép trong chế độ tương thích hiện tại. Nó chỉ được phép ở chế độ 110 trở lên.

  1. Tôi có thể thay đổi chế độ tương thích thành 110 không?
  2. Ý nghĩa của việc thay đổi chế độ tương thích từ 100 đến 110 là gì?

Làm ơn cho lời khuyên


OMFG! "SQL Server 2014 bao gồm những cải tiến đáng kể cho thành phần tạo và tối ưu hóa các kế hoạch truy vấn." Nhưng tôi đã không được hưởng lợi gì từ 3 năm qua vì tôi compatibility_levelvẫn ở mức 100. Tuyệt vời!
Simon_Weaver

Câu trả lời:


9

Hãy nhìn vào liên kết sau:

THAY ĐỔI Mức độ tương thích

Cuộn xuống và bạn sẽ thấy phần "Sự khác biệt giữa các cấp độ tương thích thấp hơn và cấp 110" và xác định xem có bất kỳ mục nào trong số này có ảnh hưởng đến bạn hay không. Nếu không, sau đó chỉ cần thay đổi cấp độ thành 110.


3
Điều đó sẽ mất nhiều giờ. Hiện tại có một công cụ thực hiện điều này cho bạn: Trợ lý di chuyển dữ liệu
MGOwen

5

Ngoài ra còn có Trình cố vấn nâng cấp sẽ giúp bạn xác định bất kỳ điều gì trong DB của bạn, điều này có thể gây ra sự cố khi thay đổi mức độ tương thích (về cơ bản là cách bán tự động mà @steoleary đã đề xuất giúp giảm khả năng bạn bỏ lỡ bất cứ điều gì).


Trợ lý di chuyển dữ liệu hiện đã thay thế Cố vấn nâng cấp, rõ ràng.
MGOwen

Vâng, đây là năm 2012 nên không ngạc nhiên khi họ đã thay đổi tên và / hoặc chức năng. Tôi đã thoát khỏi vòng lặp nâng cấp DB khá lâu vì tôi hiếm khi phải làm gì với DB ngày nay - thậm chí không chắc phiên bản mới nhất là gì!
Steve Pettifer

3

Trợ lý di chuyển dữ liệu của Microsoft giúp bạn nhanh chóng và dễ dàng tìm thấy mọi sự cố có thể ngăn chặn hoặc làm phức tạp việc nâng cấp.

Nếu nó không tìm thấy vấn đề gì (hoặc nếu có, và bạn đã giải quyết chúng), bạn có thể chỉ cần nâng cấp bằng cách chạy các lệnh này, từng lệnh một:

USE master
go
ALTER DATABASE [yourdatabasesname]  SET SINGLE_USER     WITH ROLLBACK IMMEDIATE
go
ALTER DATABASE [yourdatabasesname]  SET COMPATIBILITY_LEVEL = 110    -- 130=SQL Server 2016, 120=2014, 110=2012
go
ALTER DATABASE [yourdatabasesname]  SET MULTI_USER
go
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.