gpt4 book ai didi

sql-server - SQL Server 兼容级别不起作用

转载 作者:行者123 更新时间:2023-12-04 03:11:05 24 4
gpt4 key购买 nike

我们最近遇到了一个问题,即我们的开发团队正在编写的 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

它返回这个

The current compatibility level is 100.
Msg 51000, Level 16, State 1, Line 5
values match



在生产中,相同的 SQL 显示了这一点:

The current compatibility level is 100.
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near 'THROW'.



我们还没有升级我们的生产 SQL Server,并且遇到了部署问题。 THROW 是 SQL Server 2012 的新关键字,因此我希望 2008 服务器在语法上有所突破。似乎兼容级别对我来说是坏的。

可以做些什么来防止在开发环境中允许使用不兼容的 SQL?

最佳答案

根据文档( https://technet.microsoft.com/en-us/library/bb510680(v=sql.110).aspx )

Compatibility level provides only partial backward compatibility with earlier versions of SQL Server.



因此,在引用的链接中,您可以看到兼容模式可能影响的列表。

为了避免这种问题,我的建议是,根据经验,开发和生产必须一致(尽可能)。如果不是,例如在预定升级期间,至少测试环境必须与生产环境类似。

在过去,我们不得不卡住发布周期几天(关键错误修复除外)。

关于sql-server - SQL Server 兼容级别不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45282961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com