添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

报错问题: 关键字 'with' 附近有语法错误。如果此语句是公用表表达式、xmlnamespaces 子句或者更改跟踪上下文子句,那么前一个语句必须以分号结尾。

原因: 数据库2008版本 不支持 OPENJSON函数,因此需要把服务器的兼容级别调整了 2016或以上

解决方法: 选中数据库->右键并选择属性->选项->修改兼容性级别为2016(建议使用最下方命令进行修改)

注意: 如果在用户连接到数据库时更改兼容级别,可能会使活动查询产生不正确的结果集。例如,如果在编写查询计划时兼容级别发生更改,则编写后的计划可能同时基于旧的和新的兼容级别,从而造成计划不正确,并可能导致结果不准确。此外,如果将计划放在计划缓存中供后续的查询重用,则问题可能更加复杂。为了避免查询结果不准确,建议您使用以下过程来更改数据库的兼容级别:

--将用户设置为多用户访问模式
SELECT name ,compatibility_level ,recovery_model_desc FROM sys.databases WITH(NOLOCK);
USE master;
-- 将用户设置为单用户访问模式
ALTER DATABASE 数据库名称 SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
-- 修改数据库的兼容级别
ALTER DATABASE 数据库名称 SET COMPATIBILITY_LEVEL = 130; 
-- 将用户设置为多用户访问模式
ALTER DATABASE 数据库名称 SET MULTI_USER;

附:若数据库版本只能使用2008,解析Json可参照如下链接:

SqlServer2008如何解析Json—附详细代码_咏絮v的博客-CSDN博客

openJson:打开Json字符串 IsJson:判断一个字符串是不是合法的Json格式。是返回1,否返回0,null返回null。 Json_Value:从Json字符串中提取值。 Json_Query:Json字符串中提取对象数组。 Json_Modify:更新Json字符串中的属性值,并返回更新的Json字符串。 开始之:创建示例数据 declare @json_str varchar(max) set @json_str='[ {"key":3,"value1":10,"value2":[{"vv21":13,"vv22":103}],"value3":n
这个事儿的背景吧就是因为加锁查询速度太慢,于是让咱优化,至少先通过使用with(nolock)来解决查询慢的问题,这么个事儿说来也简单对伐,但是影响范围特别大,因为要优化的这个存储过程是个动态存储过程,有70多个操作行为DAO调用到了这个存储过程,可谓牵一发而动全身。 报错了! 一开始自信满满,参照了一篇文章了解了解with(nolock)咋玩儿 SQL Server 中WITH (NOLOCK...
sdm_bom_relation u INNER JOIN cte_sdm_bom_relation t ON u.matcode_parent = t.matcode AND u.tenant_code = 'asusp' SELECT cte_sdm_bom_relation WHERE plan_code = 'WKASUSP01202555'; > Msg 156, Level 15, State 1, Server 10_0_24_9, Procedure , Line 0 关键字 'WITH' 附近语法错误。 > Msg 319, Level 15, State 1, Server 10_0_24_9, Procedure , Line 0 关键字 'with' 附近语法错误。如果此语句公用表表达式xmlnamespaces 子句或者更改跟踪上下文子句,那么一个语句必须以分号结尾。 > Msg 102, Level 15, State 1, Server 10_0_24_9, Procedure , Line 0 “)”附近语法错误。 > [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]关键字 'WITH' 附近语法错误。 (156) [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]关键字 'with' 附近语法错误。如果此语句公用表表达式xmlnamespaces 子句或者更改跟踪上下文子句,那么一个语句必须以分号结尾。 (319) [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]“)”附近语法错误。 (102) > 时间: 0.029s
IBatis中#号和$号的区别: 用“#”的话,ibatis会在你的变量后加上“'”(单引号),而用“$”的话,则不会加“'”(单引号) #Table#à’Table’ $Table$àTable 可以使用如下语句测试sql语句执行的时时间 CHECKPOINT DBCC FREEPROCCACHE DBCC DROPCLEA...
该表包含错误消息编号和描述,它是sys.messages目录视图中错误消息的文本。 如果适用,错误编号是指向更多信息的链接。 此列表并不详尽。 有关所有错误的完整列表,请使用以下查询查询sys.messages目录视图: SELECT message_id AS Error, severity AS Severity, [Event Logged] = CASE is_event_logged WHEN 0 THEN 'No' ELSE 'Yes' END, text AS [Description] 七、数据库登录名、服务器角色、权限管理等操作 --1、使用T-SQL修改服务器的认证模式 xp_instance_regwrite N'HKEY_LOCAL_MACHINE',N'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQLServer','LoginMode',N'REG_DWORD',2 --1、windows身份认证 --2、SQL S...
关键字 'with' 附近语法错误。如果此语句公用表表达式xmlnamespaces 子句或者更改跟踪上下文子句,那么一个语句必须以分号结尾
在SQL Server中,出现“关键字 'with' 附近语法错误。如果此语句公用表表达式xmlnamespaces 子句或者更改跟踪上下文子句,那么一个语句必须以分号结尾”的错误,通常是因为在使用`WITH`关键字(如在`OPENJSON`的`WITH`子句)之语句没有以分号结尾。 以下是解决该问题的方法: #### 1. 确保一个语句分号结尾 当在使用`OPENJSON`的`WITH`子句时,如果面有其他语句,需要在该语句末尾添加分号。例如,修改之的代码: ```sql -- 定义包含多个JSON对象的JSON数据 DECLARE @json NVARCHAR(MAX) = '[ "id": 1283700766401617920, "invoiceId": 1283700766330314752 -- 注意这里添加了分号 ;INSERT INTO #TempTable SELECT j.id, j.invoiceId OPENJSON(@json) WITH ( id BIGINT, invoiceId BIGINT ) AS j; #### 2. 检查代码中是否存在隐藏的语法错误 有时候,错误可能并不是真正在`WITH`关键字附近,而是之语句存在语法错误。需要仔细检查代码,确保每个语句的语法都是正确的。 #### 3. 代码示例 以下是一个完整的示例,确保所有语句都以分号结尾: ```sql -- 定义包含多个JSON对象的JSON数据 DECLARE @json NVARCHAR(MAX) = '[ "id": 1283700766401617920, "invoiceId": 1283700766330314752 -- 创建临时表 CREATE TABLE #TempTable ( id BIGINT, invoiceId BIGINT -- 插入数据,注意一个语句分号结尾 ;INSERT INTO #TempTable SELECT j.id, j.invoiceId OPENJSON(@json) WITH ( id BIGINT, invoiceId BIGINT ) AS j; -- 查询临时表数据 SELECT * FROM #TempTable; -- 删除临时表 DROP TABLE #TempTable; SqlServer2008使用OpenJson函数报错:关键字 ‘with‘ 附近有语法错误。如果此语句是公用表表达式xmlnamespaces 子句或者更改跟踪上下文子句那么前一个语句必须以分号结尾 szdl88: 还真是这个原因,感谢 Vue+element ui+echart柱形图—附代码 ztiongtiong: 请问listProductChart怎么写的啊表情包 win11安装IIS步骤—图解 ChaITSimpleLove: "建议全选安装" 有些不恰当,按需安装相对合适! 直接在浏览器中访问程序无问题,在IIS中点击浏览网站无反应 感谢大佬,设置为ie就可以了