连接到Azure Blob并删除文件(如果存在)

时间:2018-03-27 19:06:11

标签: c# visual-studio azure ssis azure-storage-blobs

我需要使用SSIS脚本任务c#连接到Azure容器,并检查文件名(abc.csv)。如果file存在,则将变量更新为1并删除该文件。

以下是我在尝试多个网站后设法编写的代码: -

#region Namespaces
using Microsoft.Extensions.Configuration;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using System.Threading.Tasks;
#endregion

      public void Main()
            {
                CloudStorageAccount storageAccount = new CloudStorageAccount(
       new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(
       "Account_Name","XXX0sCXXQsBXXXxMnXXXXXXNXXXPCjPQ=="), true);

                // Create a blob client.
                CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

                // Get a reference to a container named "mycontainer."
                CloudBlobContainer container = blobClient.GetContainerReference("test");

                if (container.GetBlockBlobReference("abc.csv").Exists())
                {
                    Dts.Variables["User::FileExistsFlg"].Value = "1";
                }

上述脚本因调用错误而失败。一旦变量更新为1,我不确定如何删除文件。

1 个答案:

答案 0 :(得分:1)

正如我所测试的那样,在Dts.Variables["User::FileExistsFlg"].Value = "1";之前,它始终能够正常运作。

所以我建议您检查脚本任务是 ReadOnlyVariables 还是 ReadWriteVariables 。以下是有人从blob加载CSV,您可以参考it

之后,您可以尝试debug脚本任务。

注意: 在64位模式下运行程序包时,无法调试脚本任务。您必须执行程序包以调试脚本任务。如果仅执行单个任务,则会忽略脚本任务代码中的断点。

如果您无法调试脚本任务,可以尝试implement log in your packages

Integration Services日志提供程序可以将日志条目写入文本文件,SQL Server Profiler,SQL Server,Windows事件日志或XML文件。