我们最近遇到了一个问题,开发团队编写的SQL包含了SQL Server 2012/2014的新特性,但在运行2008 compatibility的SQL Server 2014上仍然被允许执行。
当我在开发服务器上运行时,
当我在开发服务器上运行时,
EXEC SP_DBCMPTLEVEL '<insert db>'
GO
IF 1=1
THROW 51000, 'values match', 1;
GO
它返回这个
当前兼容级别为100。
Msg 51000,级别16,状态1,第5行
值匹配
在生产中,相同的SQL显示如下:
当前兼容级别为100。
Msg 102,级别15,状态1,第5行
'THROW'附近有语法错误。
我们尚未升级我们的生产SQL Server,遇到了部署问题。THROW是SQL Server 2012中新的关键字,因此我预计2008服务器会在语法上出现错误。对我来说,兼容性级别似乎已经损坏。
有什么方法可以防止不兼容的SQL在开发环境中被允许?