我尝试将一些表(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);
答案 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);
}
}