小编Sim*_*loy的帖子

SQL Server 2008 T-SQL功能不尊重兼容级别

我无意中在一个包含一个函数的脚本中使用了一些SQL Server 2008 T-SQL特性,该函数将部署到众多客户数据库中,其中一些数据库将是SQL 2005.

违规声明的一个例子:

create function dbo.fnThisWontWorkOnSQL2005
    ()
returns varchar(max)
as
begin
    declare @intCounter int = 2
    return @intCounter
end

select dbo.fnThisWontWorkOnSQL2005()
Run Code Online (Sandbox Code Playgroud)

在SQL2008实例上,这将返回2.

在SQL2005实例上,它建议"无法为本地变量分配默认值".

但是,在SQL2008 R2实例上运行的兼容级别设置的SQL 2005数据库上,代码运行愉快并返回2.

我的问题出现了,因为我在SQL2008R2实例上进行开发,并且我假设将目标数据库的兼容级别设置为SQL Server 2005会标记任何无效的T-SQL,尽管这不会发生,或者至少我找不到任何内容防止它发生.

有人知道如何防止这种情况发生吗?我已经进行了各种搜索但找不到方法,这对我来说感觉像是一个错误,或者我总是需要在我将部署到的最低SQL版本上进行开发?

t-sql sql-server-2005 sql-server-2008

3
推荐指数
1
解决办法
2091
查看次数

标签 统计

sql-server-2005 ×1

sql-server-2008 ×1

t-sql ×1