Sql server CONCAT函数在兼容级别为100的SQL Server数据库上工作(2008年)

Sql server CONCAT函数在兼容级别为100的SQL Server数据库上工作(2008年),sql-server,Sql Server,我有一个数据库运行在SQL Server 2017实例(14.0)上,但在2008年的兼容级别(10.0)上。然而,当我使用CONCAT对该数据库运行查询时,即使CONCAT是在2012年引入的,它们也不会出错。为了处理这个用例,我还需要做些什么,还是兼容性级别与功能无关?兼容性模式的目标是让旧代码在新服务器上运行,而不是在新服务器上测试旧服务器的代码。为什么需要使用2008兼容性模式?有些东西在兼容模式下可以正常工作,有些则不行。顺便说一句,没有一套规则像函数有效和xxxx无效。兼容模式的目标

我有一个数据库运行在SQL Server 2017实例(14.0)上,但在2008年的兼容级别(10.0)上。然而,当我使用CONCAT对该数据库运行查询时,即使CONCAT是在2012年引入的,它们也不会出错。为了处理这个用例,我还需要做些什么,还是兼容性级别与功能无关?

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

为什么需要使用2008兼容性模式?有些东西在兼容模式下可以正常工作,有些则不行。顺便说一句,没有一套规则像函数有效和xxxx无效。兼容模式的目标是让旧代码在新服务器上运行,而不是在新服务器上测试旧服务器的代码servers@Andomar啊,那么兼容性级别就是处理不推荐的功能,是吗?这是有道理的,我错误地认为它本质上是让服务器/DB像在您选择的任何级别上运行一样运行。如果你发布一个答案,我会接受。就像我刚才说的,你为什么要故意让你的系统像一个旧的一样工作?这会破坏升级的意义,不是吗?@SeanLange有时我们会让开发人员运行比服务器上运行的SQL server更新的版本。我曾认为,使用兼容性级别可以确保,如果他们使用旧版本SQL server上不可用的功能,那么它将失败。显然,我们在测试QA时仍然会发现问题,但这会节省一些时间。也就是说,直到我们可以用流浪汉或码头工人之类的东西来避免这种情况。