为什么会出现SSIS脚本任务错误Azure Blob存储-调用目标引发了异常

时间:2018-10-19 09:52:10

标签: ssis azure-blob-storage

在使用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;
        }

任何想法都会受到赞赏,

致谢, 安东尼

1 个答案:

答案 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

的这篇文章。