[XML输出在SQL中被截断

问题描述 投票:21回答:8

我需要以XML返回我的结果集,并且工作正常,但是如果记录数增加,我的xml输出为truncated,这是我的查询

select t.id,t.name,t.address from test FOR XML AUTO, ROOT('Response'), ELEMENTS

但是我已经设置了一些选项来增加输出结果集,例如..

Tools --> Options --> Query Results --> SQL Server --> Results to Text --> Maximum              
number of characters displayed in each column
Tools --> Options --> Results --> Maximum characters per column

但仍然无法获得想要的结果。

请提出我的解决方案

编辑:但是,当我单击XML时,它将在另一个查询窗口中打开,并且此处显示所有xml,但它不会返回所有xml而不是被截断的xml。

谢谢。...

sql xml sql-server-2005 ssms
8个回答
5
投票

我在Management Studio和xml结果集中遇到了相同的问题。我已经通过使用c#和SqlDataReader以编程方式获取输出来解决此问题。


58
投票

尝试以下操作:

Declare @xmldata xml
set @xmldata = (select ... From test for xml...)
select @xmldata as returnXml

5
投票

我有同样的问题。我将查询结果设置更改为“无限制”,但没有用。有一个解决方法。它不是很整洁,但是如果您确实想继续使用SQL Server Management Studio并获得结果。调整查询以转换使用以下方式存储的xml:

convert(xml,'<xml><![CDATA[' + cast(MyColumnWithXml as varchar(max)) + ']]></xml>') 

返回全文。请注意,您必须在结束时进行一些格式化


2
投票

这对我有用(SSMS 2012):工具>选项>查询结果> SQL Server>网格结果:重试的最大字符数:XML数据:无限制。然后,将网格的结果保存到文件中。


1
投票

如果即使更改SSMS选项后XML结果集仍然被截断,请在运行XML语句之前将SQLCMD实用程序与:XML ON选项一起使用。使用-o开关将输出定向到文件。 SQLCMD是一个命令行实用程序,使用非常简单。参见http://msdn.microsoft.com/en-us/library/ms162773.aspx


0
投票

您在“查询输出”窗口中获得的XML输出并不是真正用于保存有效的XML文档。您可以从SQL Server中获取有效的XML。使用.NET中的ADO或SQLXML托管类将其捕获为流。

但是您可以通过使用来限制查询输出大小在SQL Server Management Studio中,转到工具>>选项>>查询结果>> SQL Server >>结果到文本>>每列中显示的最大字符数


0
投票

我知道这个问题是像10年之前被问到的,但是仍然有人是否正在寻找不需要在数据库方面进行任何更改的解决方法,该解决方法与“已接受”的答案有点类似,但是在[ C0]。

您可以使用SqlDataReader并使用DataTable填充它。您的SqlDataAdapter数据将分为多行。

例如

XML

注意:

  • 上面的代码假定从string xmloutput = ""; var cmd = new SqlCommand("<some sql query that returns data in xml format>", con); var da = new SqlDataAdapter(cmd); var dt = new DataTable(); da.Fill(dt); if (dt.Rows.Count > 0) foreach (DataRow dr in dt.Rows) { xmloutput += dr[0].ToString(); } 返回唯一的一列,其中包含DB数据。

随后使用变量XML


-1
投票

您可以针对SQL Server 2005数据库引擎使用SQL Management Studio for 2008。如果这样做,则默认值应该足够大,但是在“工具”->“选项”->“查询结果”->“ SQL Server”中,有一个“结果网格化”和“结果文本化”节点。

Results to Grid使您可以显式控制XML数据的最大大小,默认最大大小为2MB。

如果您没有SSMS 2008的许可证,则应该可以免费使用快速版xmloutput

© www.soinside.com 2019 - 2024. All rights reserved.