【发布时间】:2018-05-02 04:19:28
【问题描述】:
我有一个在 SQL Server 2017 实例 (14.0) 上运行的数据库,但兼容级别为 2008 (10.0)。然而,当我使用 CONCAT 对该数据库运行查询时,即使 2012 年引入了 CONCAT,它们也不会出错。我还需要做些什么来处理这个用例,还是不关心兼容性级别有功能吗?
【问题讨论】:
-
为什么需要使用2008兼容模式?有些东西在兼容模式下可以正常工作,有些则不行。 AFAIK,没有一套规则,比如函数有效,xxxx 无效。
-
兼容模式的目标是让旧代码在新服务器上运行,而不是在新服务器上测试旧服务器的代码
-
@Andomar 啊,所以兼容性级别是为了处理已弃用的功能,是吗?这是有道理的,我错误地认为它本质上是为了让服务器/数据库像在您选择的任何级别上运行一样运行。如果您作为答案发布,我会接受。
-
就像我说的,你为什么要故意让你的系统像旧系统一样运行?那会破坏升级的意义,不是吗?
-
@SeanLange 有时我们让开发人员运行的 SQL Server 版本比服务器上运行的版本更新。我曾认为使用兼容性级别可以确保如果他们使用旧版本的 SQL Server 上不可用的功能,它会失败。显然,我们在进行 QA 测试时仍然会发现问题,但会节省一些时间。也就是说,直到我们可以使用 Vagrant 或 Docker 之类的东西来避免这种情况。
标签: sql-server