You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2019中SSMS策略ExecuteSql执行FOR XML PATH('')报错

SQL Server管理策略中ExecuteSql调用FOR XML PATH('')报错105的原因及解决

报错核心原因

你遇到的错误105,本质是单引号嵌套冲突导致SQL解析器误判语法。

在SSMS的管理策略表达式里,ExecuteSql的第二个参数是用单引号包裹的SQL语句。当你把FOR XML PATH('')写进去时,PATH('')里的单引号会和外层包裹SQL的单引号撞车——解析器会把PATH('后面的第一个单引号当成外层字符串的闭合标记,剩下的内容就成了无引号的非法语法,直接抛出“引号未闭合、语法错误”的提示。

比如错误写法:

ExecuteSql('STRING', 'SELECT name + '', '' FROM sys.databases FOR XML PATH('')')

这里PATH('')里的单引号会打断外层字符串的闭合逻辑。

解决方法:正确转义单引号

在SQL Server的字符串中,单引号必须用两个连续单引号来转义。针对FOR XML PATH('')的场景,你需要把里面的空字符串单引号转义成'',正确写法如下:

ExecuteSql('STRING', 'SELECT name + '', '' FROM sys.databases FOR XML PATH('''')')

此时PATH('''')会被SQL正确解析为PATH(''),既保留了无<row>标签的XML输出(解决之前的字符串截断问题),又避免了引号冲突。

验证小技巧

把调整后的SQL语句单独拿到SSMS查询窗口执行,确认语法没问题后再放回策略的表达式里,能避免不必要的调试麻烦。

内容的提问来源于stack exchange,提问作者Bruce Dimon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:20:05