Bea*_*mph 4 sql-server sql-server-2008-r2
我有一个 SQL Server 2016 实例,上面有一个数据库,以 2008 的兼容级别运行。但是,下面的虚拟 proc 创建并执行得很好。
CREATE PROC usp_TestFormat
AS
BEGIN
SELECT FORMAT(CAST('10/25/2018' AS DATE), 'MMM') AS Month;
END;
Run Code Online (Sandbox Code Playgroud)
然而 FORMAT() 是一个 2012+ 函数,所以当我尝试使用我在上面的数据库中编写的存储过程,或者甚至上面的测试过程,并将它部署到我们的生产数据库中,它在 2008r2 机器上运行,它失败了,因为它无法识别该功能。我的理解是兼容性级别会阻止这种类型的行为,因为我现在必须检查并重新编写使用 format 函数的代码。这是一个错误,还是我不像我想象的那样了解兼容性级别?
这是一个错误,还是我不像我想象的那样了解兼容性级别?
不是错误。兼容性级别仅用于使升级更容易。IE 以防止在升级到较新版本的 SQL Server 时出现错误或行为更改。
升级到新版本的 SQL Server 后,您可能希望在不更改数据库兼容级别的情况下利用新特性和功能,因此在可能的情况下,较低的兼容级别不会阻止新的 TSQL 语言功能。
| 归档时间: |
|
| 查看次数: |
758 次 |
| 最近记录: |