微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – ‘CONCAT’不是公认的内置函数名

客户报告他们在sql Server 2012上运行,但我们在最终交付之前提供了一些测试查询以进行测试,但是:

‘CONCAT’ is not a recognized built-in function name.

我知道CONCAT()是sql Server 2012中引入的一个新的内置函数,它很好并且很好,但是我被要求回滚我的更改以使“2008R2兼容”的幌子是“用户执行查询可能没有Transact-sql权限来执行.“所以我只是证明了我的观点,即客户端很可能在DEV中安装了与在PROD中安装的不同版本的sql Server.

我找不到任何关于明确拒绝内置标量值函数的SELECT / EXECUTE权限的信息,但它是否可能,如果是这样,用户仍会收到相同的错误文本?

解决方法

CONCAT是在sql Server 2012中引入的;没有办法使它在sql Server 2008 R2中工作.从 the documentation开始:

07001

即使在兼容性方面,2012年也无法让它失败.那么请你的人检查SELECT @@ VERSION;在两台服务器上;你会发现CONCAT失败的地方是< 11.为了使您的代码与早期版本兼容,您需要使用标准字符串连接运算符().我不知道如何使用标量函数执行此操作,除非您始终使用完全相同数量的输入字符串并且您更改代码以使用dbo.CONCAT()而不是CONCAT()(将会出现这样的情况重要的是,如果您的函数执行本机不执行的任何操作,则在升级时需要一致的行为.所以我不推荐这种方法.您可能还需要添加NULL处理和其他微小更改(如果我们看不到它,则无法告诉您如何准确地更改现有脚本).

原文地址:https://www.jb51.cc/mssql/79352.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐