问题描述
|
我已经为此苦了将近一个星期,但仍然没有找到任何解决方案-.-
我的目标是通过使用\“ FOR XML \”语句进行查询来从sql Server接收XML,并将该XML作为字符串/流以转发到XSLT Transformer,并将结果显示为HTML。
可怜的是我应该使用的Web服务器环境:IBM Domino 8.5.2,通常使用Lotus Script和Lotus Notes数据库来生成网站。
但是现在,当谈论大型数据库(如我们的网站点击统计信息)时,Notes数据库的性能已经达到了死胡同,该数据库将数百万的点击数存储为数据集。因此,我们决定迁移到可以更快提供自定义过滤结果的mssql2008服务器。
我实际上确实设法建立了与sql Server的连接,提交了一个查询,并将结果作为xml。但现在? :)看来,sql Server提供了他的“ for xml”查询结果,这是一种自己的二进制编码字符的奇怪数据类型,在打印它们或保存到文件时毫无意义。而且Lotus Script(几乎是VBScript)似乎没有可能处理该xml数据类型。
我尽一切可能找到结果-Lotus内置ODBC类,通过OleDB的LCConnection,通过OleDB的ADO Connection ...,但是每次尝试都以一堆不可读的数据结尾。
我可以想象在Domino和sql Server之间使用Web服务,将数据作为字符串准备好用于Domino脚本,但是我想避免不必要的开销。
您能否在sql语句中告诉您希望所得的xml是什么数据类型?就像字段的cast()/ convert()一样,但是对于整个xml结果呢?这样我就可以将结果读取为text / varchar字段?
克里斯(Thx)
解决方法
我知道我之前曾经做过这样的事情,而我想这就是你要做的事情:
SELECT CAST((SELECT [Columns] FROM [Tables] FOR XML PATH(\'\')) AS VARCHAR(MAX)) AS XmlData
这将吐出您所生成的XML作为Lotus Notes可以很好接受的文本数据。
编辑:如果需要以另一种样式生成XML,则可以将FOR XML PATH(\'\')
更改为FOR XML AUTO
。