在 Azure 存储帐户中加载需要复制到块 blob 的 Azure 页面 blob,以便可以将它们从“冷”存储层设置为“存档”存储层。页面 Blob 由 SQL Server(2016 年之前)备份到 URL 创建。
我就此与 Microsoft 进行了交谈,他们建议将 AzCopy 与 Azure File blob 作为垫脚石,例如 Page blob -> block blob(文件存储)-> block blob(Blob 存储)。这一切在 AzCopy 或基于 GUI 的 Azure 工具中运行良好,但我需要将其自动化并建立一些弹性。
我遇到的问题是,无论我如何投射,我都无法将 Cloud Page Blob 复制到 Cloud Block Blob。这是一个简化的示例,用于显示(缺乏)进展以及我将如何解决这个问题。我将把它包装在生产中的 Task<> 中,但我无法让 .StartCopy 工作。有任何想法吗?
CredentialEntity ce = Utils.GetBlobCredentials();
StorageCredentials sc = new StorageCredentials(ce.Name, ce.Key);
CloudStorageAccount storageAccount =
new CloudStorageAccount(new StorageCredentials(ce.Name, ce.Key), true);
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer sourceContainer = cloudBlobClient.GetContainerReference(@"archive");
CloudBlobContainer targetContainer = cloudBlobClient.GetContainerReference(@"xfer");
CloudPageBlob source = sourceContainer.GetPageBlobReference("test.bak");
CloudBlockBlob target = targetContainer.GetBlockBlobReference("new.bak");
//target.StartCopy(source);
//target.StartCopyAsync()