【发布时间】:2017-04-27 04:47:24
【问题描述】:
我需要将数据从 SQL Server 数据库归档到 Azure 存储容器 blob。
数据由存储过程检索(基本上返回所有早于 n 天的数据)。大约有 140 万行数据需要保存到 Azure 中的 blob。
这个过程需要很长时间才能完成,所以有什么方法可以加快这个过程吗? C# 控制台应用程序用于检索数据并将其上传到 Azure。这是相关代码。
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("snip");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("core-backups");
CloudBlockBlob blob = container.GetBlockBlobReference("2017/04/26/data.txt");
var data = new DataTable();
using (SqlConnection conn = new SqlConnection("snip"))
{
conn.Open();
SqlCommand getOldLogData = new SqlCommand("backup_sp", conn);
getOldLogData.CommandType = CommandType.StoredProcedure;
getOldLogData.CommandTimeout = 300;
getOldLogData.Parameters.AddWithValue("@Days", 30);
using (SqlDataAdapter adr = new SqlDataAdapter(getOldLogData))
{
adr.Fill(data);
}
}
using (var writeStream = blob.OpenWrite())
{
using (var writer = new StreamWriter(writeStream))
{
data.WriteXml(writer, XmlWriteMode.WriteSchema);
}
}
保存在 Azure 中的文件是 540 MB,所以我正在寻找一种方法来提高上传到 Azure 的效率,如果可能的话,如何压缩数据以使文件更小?我们将来可能想要恢复备份的数据。
【问题讨论】: