如何将 SQL Server 兼容级别查询到变量中?

ber*_*d_k 3 sql-server compatibility-level

我知道要查询数据库的当前兼容级别

declare @dbname sysname
select @dbname = db_name(0)
exec sp_dbcmptlevel @dbname
Run Code Online (Sandbox Code Playgroud)

但这似乎通过打印返回其结果,我发现无法将值分配给变量并使用它来控制 if ... else ... 构造以根据当前设置执行不同的代码。

Mar*_*ian 5

您可以查询系统表 sys.databases:

-- for SQL 2005+
declare @level tinyint;
select @level = [compatibility_level]
from sys.databases
where name = 'AdventureWorks'

Select @level
GO

-- for SQL 2000+
declare @level tinyint;
select @level = [cmptlevel]
from sysdatabases
where name = 'AdventureWorks'

Select @level
GO
Run Code Online (Sandbox Code Playgroud)