代码之家  ›  专栏  ›  技术社区  ›  Muhammad Akhtar

XML输出在SQL中被截断

  •  17
  • Muhammad Akhtar  · 技术社区  · 16 年前

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

    谢谢。。。。

    7 回复  |  直到 16 年前
        1
  •  5
  •   Axarydax    16 年前

    我对managementstudio和xml结果集也有同样的问题。我已经通过使用c#和SqlDataReader以编程方式获取输出来解决了这个问题。

        2
  •  63
  •   Dan Is Fiddling By Firelight Leniency    12 年前

    请尝试以下操作:

    Declare @xmldata xml
    set @xmldata = (select ... From test for xml...)
    select @xmldata as returnXml
    
        3
  •  5
  •   Vin    10 年前

    我也有同样的问题。我将查询结果设置更改为“无限制”,但它不起作用。有一个工作。它不是很整洁,但是如果您确实想继续使用SQLServerManagementStudio并获得结果的话。调整查询以转换存储的xml,使用:

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

        4
  •  4
  •   JohnH    11 年前

    这对我有效(SSMS 2012): 然后我将网格的结果保存到一个文件中。

        5
  •  1
  •   user1001713 user1001713    14 年前

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

        6
  •  1
  •   Tim Clauss    5 年前

    我只是想给上面的答案加一个简短的补充。更改SSMS 2017工具中的设置>选项>查询结果>SQL Server>向网格工程提交结果。但是,您必须完全关闭SSMS并重新打开它,设置才能生效。

        7
  •  0
  •   Dinesh    16 年前

    在“查询输出”窗口中获得的XML输出并不是真正用于保存的 在.NET中使用ADO或SQLXML托管类将其捕获为流

    但是,可以使用 在SQL Server Management Studio中,转到“工具”>&燃气轮机;选项>&燃气轮机;查询结果>&燃气轮机;SQL Server>&燃气轮机;结果到文本>&燃气轮机;每列中显示的最大字符数

        8
  •  0
  •   Emil Lerch    16 年前

    如果您没有SSMS2008的许可证,您应该可以免费使用速成版 here .

        9
  •  0
  •   vikscool    6 年前

    我知道有人问这个问题 10年 但是如果有人正在寻找一种不需要对DB端进行任何更改的解决方法,并且与公认的答案有点类似,但不需要修改 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