小编sou*_*lex的帖子

兼容级别 80 的实际行为是什么?

有人可以让我更好地了解兼容模式功能吗?它的行为与我预期的不同。

据我所知,兼容模式是关于不同版本的 SQL Server 之间某些语言结构的可用性和支持。

它不会影响数据库引擎版本的内部工作。它将尝试阻止使用早期版本中尚不可用的功能和构造。

我刚刚在 SQL Server 2008 R2 中创建了一个兼容级别为 80 的新数据库。创建了一个只有一个 int 列的表,并用几行填充它。

然后用一个row_number()函数执行一个 select 语句。

我的想法是,由于 row_number 函数是在 2005 年才引入的,这会在兼容 80 模式下引发错误。

但令我惊讶的是,这工作得很好。然后,当然,只有在您“保存某些内容”时才会评估兼容规则。所以我为我的 row_number 语句创建了一个存储过程。

存储过程的创建进行得很顺利,我可以完美地执行它并获得结果。

有人可以帮助我更好地了解兼容模式的工作吗?我的理解显然有问题。

sql-server sql-server-2008-r2 compatibility-level

47
推荐指数
2
解决办法
4万
查看次数