我需要使用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,我不确定如何删除文件。
答案 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文件。