2013-04-12 62 views
3

我在SQL Server Management Studio中工作的一个存储过程。还有,我试图用XPATH访问一个包含XML列,但我得到这个错误:SQL服务器:XPath查询失败

Parsing XML with internal subset DTDs not allowed. Use CONVERT with style option 2 to enable limited internal subset DTD support`

我读转换并导入XML,但没有运气的文档。

要清楚,我必须存储在一个表中的列XML,现在想查询到内存中的存储过程后XPath来访问它。任何人都知道我该怎么办?

回答

4

你最有可能得到这个,因为里面的XML某处你正在使用的文件定义,如下所示:(DTD的MSDN example

<!DOCTYPE DOC [<!ATTLIST elem1 attr1 CDATA "defVal1">]><elem1>January</elem1> 

微软阻止此默认为它创建了一个潜在的安全漏洞。与样式选项2的消息转换是在告诉你,你可以为了通过使用CONVERT function as it relates to XML来处理这个XML启用DTD部分支持。

我没有与这样做,所以我不能提供比链接MSDN更多的个人经验。

唯一的其他选择是在Microsoft不推荐的服务器上启用完整的DTD支持。

+4

是的,就在,谢谢。看文档后,命令是这样的'转换(XML,myXmlAsString,2)' –