如何在sp_dbcmptlevel被废弃后检查SQL Server数据库的兼容性?

69
根据SQL Server Books Online(BOL)关于sp_dbcmptlevel的文档(链接),该功能将在未来的 Microsoft SQL Server 版本中删除。不要在新开发工作中使用此功能,并尽快修改当前使用此功能的应用程序。请改用 ALTER DATABASE 兼容性级别。

目前,我所知道的检查数据库兼容性的唯一 TSQL 方法是通过 sp_dbcmptlevel。据我所知,ALTER DATABASE Compatibility Level 只用于设置兼容性级别,而不能获取信息。
那么,在不使用 GUI 的情况下,如何获取兼容性级别呢?
5个回答

118
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'
    WHEN 150 THEN 'SQL Server 2019'
    WHEN 160 THEN 'SQL Server 2022'
    ELSE 'new unknown - '+CONVERT(varchar(10),compatibility_level)
END
from sys.databases

我想补充一下,你可以通过打开 SQL Server Profiler 并查看 Management Studio 的操作来解决这个问题。我刚刚查了一下,在一个相当长且格式不佳的查询中,它还使用了 sys.databases。 - MikeKulls
2
在SQL2000+中,使用以下代码查询数据库兼容级别:select cmptlevel from master.dbo.sysdatabases where name = db_name()。不确定这个功能何时会被移除。 - Tim Lehner

19
select compatibility_level from sys.databases where name ='myDB'

7

我认为这里会有用……

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

2

如何检查SQL Server数据库的兼容性

通过以下查询语句可以查看当前数据库的兼容性等级:
SELECT compatibility_level as [当前兼容性等级] FROM sys.databases WHERE name = '数据库名称';

1

它说我的数据库中没有sys.databases。 - Billy Koswara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接