如何在SSMS中查看Analysis Server返回的无法识别响应并排查报错
报错含义与触发原因
你看到的标签不匹配提示,本质是SSMS在解析服务器返回的XML格式结果时,发现前后标签无法对应:原始结果中开头存在<Member>开头标签,但到了结尾位置本该出现的</Member>闭合标签被截断成了</Me>,导致XML格式校验失败。
触发该问题的常见原因如下:
- 查询语句包含
FOR XML子句,生成的XML内容长度超过SSMS默认的XML结果长度限制,传输过程中被自动截断,破坏了XML标签结构 - 查询的字段为XML类型,字段本身存储的内容过大,被SSMS结果展示模块截断
- 服务器返回结果过程中出现网络波动,导致部分内容丢失,出现标签截断
查看完整响应文本的方法
方法1:调整SSMS全局结果长度限制(最常用)
- 打开SSMS顶部菜单栏的
工具→选项 - 依次展开
查询结果→SQL Server→结果到网格 - 将
XML数据的最大字符检索大小调整为无限制,也可以同步将非XML数据的最大字符检索大小调整到最大值65535 - 重启SSMS后重新执行查询,点击结果网格中的XML单元格即可打开完整的XML内容,跳转到报错提示的字符位置即可查看具体内容
方法2:直接将结果导出到本地文件
如果不想修改全局配置,可以选择将结果直接输出到本地文件:
- 执行查询前按下快捷键
Ctrl+Shift+F切换到结果到文件模式,执行查询后选择保存路径,完整响应内容会直接写入到本地文件,不会触发长度截断 - 也可以通过SQL命令直接导出,示例语法如下:
-- 将你的查询结果赋值给XML变量 DECLARE @fullXML XML = (/* 此处替换为你的原始查询语句 */) -- 导出到本地路径,需要先开启xp_cmdshell权限 EXEC master..xp_cmdshell 'bcp "SELECT @fullXML" queryout "C:\temp\full_result.xml" -S 本地实例名 -T -c'
导出后用VS Code、Notepad++等文本编辑器打开文件,跳转至报错提示的字符位置即可排查问题。
内容的提问来源于stack exchange,提问作者James Bourne
相关产品推荐
相关产品推荐

