Azure sql database 使用WindowsAzure SQL数据库生成XML文件

Azure sql database 使用WindowsAzure SQL数据库生成XML文件,azure-sql-database,Azure Sql Database,有人能告诉我从WindowsAzure SQL数据库生成包含数据的XML文件的最佳方法吗 基本上,我希望通过查询特定的表来创建一个包含来自WindowsAzure SQL数据库的数据的XML,该表的数据非常庞大(大约90MB)。因为我需要运行这个工作,至少每两个小时,这应该表现得非常好 有什么建议吗 谢谢, Prav这是一个非常笼统的问题,并不是针对sqlazure的,因此很难给您一个好的答案。我建议您研究查询SQL数据库的不同方法,以及编写XML的不同方法。这可能会给你提出更具体问题的想法 9

有人能告诉我从WindowsAzure SQL数据库生成包含数据的XML文件的最佳方法吗

基本上,我希望通过查询特定的表来创建一个包含来自WindowsAzure SQL数据库的数据的XML,该表的数据非常庞大(大约90MB)。因为我需要运行这个工作,至少每两个小时,这应该表现得非常好

有什么建议吗

谢谢,
Prav

这是一个非常笼统的问题,并不是针对sqlazure的,因此很难给您一个好的答案。我建议您研究查询SQL数据库的不同方法,以及编写XML的不同方法。这可能会给你提出更具体问题的想法


90MB并不是特别大——将其放入内存应该不难。但是,你可能想考虑的方法,只保留了一小部分数据在内存中一次。例如,从
SqlDataReader
读取数据,然后立即将其写入
XmlTextWriter
,或者类似的内容

一种方法是查询数据库并将结果保存到ADO.net数据表中。拥有DataTable后,使用TableName属性为其指定您选择的名称。然后使用DataTable的WriteXml方法将DataTable保存到您选择的位置。确保指定XmlWriteMode.WriteSchema以确保保存架构和数据

请注意,如果datatable将为2Gb或更大,则会达到默认的对象内存限制.Net。一种解决方案是将查询分成更小的块,并以XML格式为每个原始查询存储多个数据表。另一个解决方案是将.Net中对象的最大大小增加到2Gb以上。这会带来一系列风险和性能问题。但是,要超过2Gb对象大小限制,请确保您的应用程序为64位,应用程序编译为.Net 4.5或更高版本,并且app.config文件应启用gcAllowVeryLargeObjects=“true”

using System.Data;
using System.Data.SqlClient;

string someConnectionString = "enter Aure connection string here";
DataTable someDataTable = new DataTable();
SqlConnection someConnection = new SqlConnection(someConnectionString);
someConnection.Open();
SqlDataReader someReader = null;
// enter your query below
SqlCommand someCommand = new SqlCommand(("SELECT * FROM [SomeTableName]"), someConnection);
// Since your are downloading a large amount of data, I effectively turned the timeout off in the line below
someCommand.CommandTimeout = 0;
someReader = someCommand.ExecuteReader();
someDataTable.Load(someReader);
someConnection.Close();
// you need to name the datatable before saving it in XML
someDataTable.TableName = "anyTableName";
string someFileNameAndLocation = @"C:\Backup\backup1.xml";
// the XmlWriteMode is necessary to save the schema and data of the datatable
someDataTable.WriteXml(someFileNameAndLocation, XmlWriteMode.WriteSchema);