XML输出在SQL中被截断

时间:2010-04-30 06:17:28

标签: sql xml sql-server-2005 ssms

我需要以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。

...谢谢

8 个答案:

答案 0 :(得分:52)

尝试以下方法:

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

答案 1 :(得分:6)

我在管理工作室和xml结果集方面遇到了同样的问题。我通过使用SqlDataReader以c#编程获得输出来解决这个问题。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

只是想我会在上面的答案中添加一个快速补充。更改 SSMS 2017 工具 > 选项 > 查询结果 > SQL Server > 结果到网格中的设置有效。但是,您必须完全关闭 SSMS 并重新打开它才能使设置生效。

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

我知道这个问题是在 10年之前提出的,但是仍然有人是否正在寻找不需要在数据库方面进行任何更改并且与“已接受”答案有点相似的解决方法但不能使用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数据的一列。

然后使用变量xmloutput

答案 7 :(得分:-1)

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

Grid的结果允许您显式控制XML数据的最大大小,默认最大大小为2MB。

如果您没有SSMS 2008许可证,您应该可以免费使用快递版here