SqlServer2008使用OpenJson函数报错:关键字 ‘with‘ 附近有语法错误。如果此语句是公用表表达式xmlnamespaces 子句或者更改跟踪上下文子句那么前一个语句必须以分号结尾
SqlServer2008使用OpenJson函数报错:关键字 ‘with‘ 附近有语法错误。如果此语句是公用表表达式xmlnamespaces 子句或者更改跟踪上下文子句那么前一个语句原因:数据库2008版本不支持Json函数,因此需要把服务器的兼容级别调整了2016或以上。解决方法:选中数据库->右键并选择属性->选项->修改兼容性级别为2016
·
报错问题:关键字 'with' 附近有语法错误。如果此语句是公用表表达式、xmlnamespaces 子句或者更改跟踪上下文子句,那么前一个语句必须以分号结尾。
原因:数据库2008版本不支持OPENJSON函数,因此需要把服务器的兼容级别调整了2016或以上。
解决方法:选中数据库->右键并选择属性->选项->修改兼容性级别为2016(建议使用最下方命令进行修改)

注意:如果在用户连接到数据库时更改兼容级别,可能会使活动查询产生不正确的结果集。例如,如果在编写查询计划时兼容级别发生更改,则编写后的计划可能同时基于旧的和新的兼容级别,从而造成计划不正确,并可能导致结果不准确。此外,如果将计划放在计划缓存中供后续的查询重用,则问题可能更加复杂。为了避免查询结果不准确,建议您使用以下过程来更改数据库的兼容级别:
--将用户设置为多用户访问模式
SELECT name ,compatibility_level ,recovery_model_desc FROM sys.databases WITH(NOLOCK);
USE master;
GO
-- 将用户设置为单用户访问模式
ALTER DATABASE 数据库名称 SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
-- 修改数据库的兼容级别
ALTER DATABASE 数据库名称 SET COMPATIBILITY_LEVEL = 130;
GO
-- 将用户设置为多用户访问模式
ALTER DATABASE 数据库名称 SET MULTI_USER;
GO
附:若数据库版本只能使用2008,解析Json可参照如下链接:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)