在使用SSIS脚本任务与Azure Blob存储进行通信时,以下代码无法运行,它可以正常运行,并将在控制台应用程序中运行! 任何人都可以对发生的问题提供任何见解,因为在SSIS或事件日志中除了该错误消息外,没有错误消息。
命名空间:
using System;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
using System.Linq;
代码:
string AccountName = Dts.Variables["User::AccountName"].Value.ToString();
string AccountKey = Dts.Variables["User::AccountKey"].Value.ToString();
try
{
StorageCredentials storageCredentials = new StorageCredentials(AccountName, AccountKey);
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount(storageCredentials, useHttps: true);
CloudBlobClient BlobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer Container = BlobClient.GetContainerReference("deltapocstorage");
CloudBlobDirectory blobDirectory = Container.GetDirectoryReference("instance1/");
CloudBlockBlob latestBlob = blobDirectory.ListBlobs()
.OfType<CloudBlockBlob>()
.OrderByDescending(m => m.Properties.LastModified)
.ToList()
.FirstOrDefault();
DateTimeOffset lastModifiedDate = new DateTimeOffset();
if (latestBlob != null)
{
lastModifiedDate = latestBlob.Properties.LastModified.GetValueOrDefault();
Dts.Variables["User::MostRecentRecord"].Value = lastModifiedDate.AddMilliseconds(1).ToString("dd/MM/yyyy HH:mm:ss.fff");
}
Dts.TaskResult = (int)ScriptResults.Success;
}
catch
{
Dts.TaskResult = (int)ScriptResults.Failure;
}
任何想法都会受到赞赏,
致谢, 安东尼
答案 0 :(得分:0)
该问题似乎与Microsoft.WindowsAzure.Storage.dll程序集相关,而不位于全局程序集缓存(GAC)中。 使用
添加程序集gacutil.exe /i "C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Microsoft.WindowsAzure.Storage.dll"
,脚本正常工作。 一旦确定了更好的方法来确保程序集已加载,请遵循David Browne How to load an assembly in an SSIS script task
的这篇文章。