mssql查询,设置非xml数据大小

时间:2014-11-10 12:41:31

标签: c# sql-server xml

我尝试将一些表(MSSQL)转换为xml文件。 结果被截断为2.7 MB(结束前仅2 KB)。

如果我增加&#34;非xml数据&#34;大小和&#34; xml数据&#34; vs express中的大小(SQL&gt;执行设置&gt;查询选项...&gt; resutls&gt; grid&gt;&#34;非xml数据&#34;和&#34; xml数据&#34;)然后我得到确切的结果< / p>

所以查询工作正常。

唯一的问题是,我需要在程序(c#)中不在查询窗口中。

我使用executexmlreader。

有人有什么理想,有什么不对吗?

        SqlConnection testConnection = new SqlConnection();
        testConnection.ConnectionString = @"Data Source=.\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;";
        testConnection.Open();

        TestCommand = new SqlCommand("exec prAdvListToXML", testConnection);

        XmlReader TestXmlReader = TestCommand.ExecuteXmlReader();
        XmlWriter TestFileWriter = XmlWriter.Create(@"C:\temp\output.xml");
        TestFileWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-16'");

        TestFileWriter.WriteNode(TestXmlReader, true);

1 个答案:

答案 0 :(得分:1)

我怀疑你的问题根本与XML无关(当然,Management Studio的行为是一个红色的鲱鱼)。您不会在任何地方关闭作家,也不确保所有数据都已处理完毕。尝试重写代码,以便妥善处理资源:

using (var testConnection = new SqlConnection()) {
    testConnection.ConnectionString = @"Data Source=.\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;";
    testConnection.Open();
    using (var testCommand = new SqlCommand("exec prAdvListToXML", testConnection))
    using (XmlReader testXmlReader = testCommand.ExecuteXmlReader())
    using (XmlWriter testFileWriter = XmlWriter.Create(@"C:\temp\output.xml")) {
        testFileWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-16'");
        testFileWriter.WriteNode(testXmlReader, true);
    }
}