none
Message: 数据库读取失败。原因: 无法创建 XML 文档,因为服务器内存不足。请使用 sp_xml_removedocument 释放 XML 文档。 RRS feed

  • 问题

  • sql 2008 r2 

    如题,在存储过程中 FOR XML PATH('tr')时报以上错误。刚开始就报错,还怎么remove呢

    (原需求:将查询出来的数据,拼成一个html的table)

    2018年1月29日 8:01

全部回复

  • 应该是其他操作导致内存占用了吧

    你试试重启一下,或者换台测试看是否有相同的问题

    2018年1月29日 9:25
  • 重启能暂时解决问题,但过几天该存储过程又报错了 ^&^
    2018年1月29日 9:47
  • Is it dedicated sql server? How much memory does the machine have? How much allocated to sql? 
    2018年1月29日 14:13
  • 我认为是XML文件出了问题,能否贴出XML文件格式的内容和TSQL语句以便诊断问题。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2018年1月30日 0:52
  • 写个任务,定期清理计划缓存

    SQL Server 2016 ~ 2000 性能优化、方案设计 QQ:315054403 田园嘉兴

    2018年1月30日 1:23
  • 分析后的文档存储在 SQL Server 的内部缓存中。MSXML 分析器 (Msxmlsql.dll) 占用 SQL Server 可用总内存的八分之一。若要避免内存不足,请运行 sp_xml_removedocument 以释放内存。

    ------------------------

    怀疑是你在使用中有不释放,或者是并发打开,导致占用超过内存上限导致

    你的都 2008R2 了,考虑直接用 xml 数据类型的 nodes 和 value 方法解析吧

    2018年1月30日 1:37
  • 通过下面的查询,可以查到所有sp_xml_preparedocument 已打开的活动句柄的信息

    内存不足的时候,可以查下,如果这个里面有很多,并且对应的 session_id 的会话状态是 sleep,说明是没有正确关闭,如果是活动状态,说明是并发过多

    SELECT * FROM sys.dm_exec_xml_handles (0)

    2018年1月30日 1:46