【问题标题】:CONCAT function working on SQL Server database with compatibility level 100 (2008)CONCAT 函数在兼容级别为 100 (2008) 的 SQL Server 数据库上工作
【发布时间】: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


【解决方案1】:

兼容模式的目标是让旧代码在新服务器上运行,而不是在新服务器上测试旧服务器的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多