2009-10-01 15 views
41

Theo BOL (SQL Server Books Online) trên sp_dbcmptlevel,
Làm thế nào để kiểm tra tính tương thích của Cơ sở dữ liệu SQL Server sau khi sp_dbcmptlevel không được chấp nhận?

Tính năng này sẽ được gỡ bỏ trong một phiên bản tương lai của Microsoft SQL Server. Không sử dụng tính năng này trong công việc phát triển mới và sửa đổi các ứng dụng hiện đang sử dụng tính năng này càng sớm càng tốt. Thay vào đó, hãy sử dụng Cấp tương thích ALTER DATABASE.

Bây giờ, cách TSQL duy nhất tôi biết về kiểm tra tính tương thích của cơ sở dữ liệu là thông qua sp_dbcmptlevel. Theo như tôi biết, ALTER DATABASE Compatibility Level chỉ dành cho thiết lập mức độ tương thích, không nhận được thông tin.

Làm cách nào để có mức độ tương thích mà không cần sử dụng GUI?

Trả lời

80
select name, compatibility_level , version_name = 
CASE compatibility_level 
    WHEN 65 THEN 'SQL Server 6.5' 
    WHEN 70 THEN 'SQL Server 7.0' 
    WHEN 80 THEN 'SQL Server 2000' 
    WHEN 90 THEN 'SQL Server 2005' 
    WHEN 100 THEN 'SQL Server 2008/R2' 
    WHEN 110 THEN 'SQL Server 2012' 
    WHEN 120 THEN 'SQL Server 2014' 
    WHEN 130 THEN 'SQL Server 2016' 
    WHEN 140 THEN 'SQL Server 2017' 
    ELSE 'new unknown - '+CONVERT(varchar(10),compatibility_level) 
END 
from sys.databases 
+0

Tôi sẽ thêm rằng bạn có thể làm việc này bằng cách mở SQL Server Profiler và xem những gì Management Studio làm. Tôi chỉ có một cái nhìn và bên trong một truy vấn khá dài và định dạng xấu nó cũng sử dụng sys.databases – MikeKulls

+1

'select cmptlevel từ master.dbo.sysdatabases trong đó name = db_name()' cho SQL2000 +, không chắc chắn khi nào điều này sẽ biến mất. –

14
select compatibility_level from sys.databases where name ='myDB' 
5

tưởng này sẽ hữu ích ở đây ...

65 = SQL Server 6.5 
70 = SQL Server 7.0 
80 = SQL Server 2000 
90 = SQL Server 2005 
100 = SQL Server 2008/R2 
110 = SQL Server 2012 
120 = SQL Server 2014 
130 = SQL Server 2016 
1

- - để thay đổi nó

EXEC sp_dbcmptlevel 'db_name', 130