You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SSIS包从SQL托管实例访问Azure文件存储

解决SSIS连接Azure文件存储获取CSV文件的方法

方法1:映射Azure文件存储为本地网络驱动器(适用于自托管SSIS运行环境)

  • 在运行SSIS包的机器上,用Azure存储账户的密钥或SAS令牌映射网络驱动器:
    • 打开管理员命令提示符,执行命令:
      net use Z: \\<存储账户名>.file.core.windows.net\<文件共享名> /u:AZURE\<存储账户名> <存储账户密钥或SAS令牌>
      
    • 映射完成后,SSIS的平面文件连接管理器就能像访问本地C:/E:/盘一样,直接读取Z:盘下的CSV文件,无需修改原有包的逻辑。
  • 若使用Azure-SSIS集成运行时(IR),需要在IR的自定义配置里提前设置驱动器映射,或者用脚本任务动态执行映射命令。

方法2:用脚本任务+Azure存储SDK直接读取文件

  • 在SSIS包中添加脚本任务,在脚本项目里安装NuGet包Azure.Storage.Files.Shares
  • 编写C#代码实现文件读取:
    1. 初始化文件共享客户端:
      string connStr = "你的Azure存储账户连接字符串";
      string shareName = "你的文件共享名称";
      ShareClient shareClient = new ShareClient(connStr, shareName);
      
    2. 定位目标CSV文件并读取内容:
      ShareDirectoryClient dirClient = shareClient.GetDirectoryClient("文件所在的子目录(可选)");
      ShareFileClient fileClient = dirClient.GetFileClient("目标文件.csv");
      
      // 读取到内存流,可直接处理或写入临时文件供后续组件使用
      using (MemoryStream ms = new MemoryStream())
      {
          fileClient.DownloadTo(ms);
          ms.Position = 0;
          // 示例:写入临时文件
          using (FileStream fs = new FileStream(@"C:\temp\tmp_file.csv", FileMode.Create))
          {
              ms.CopyTo(fs);
          }
      }
      
  • 这个方式不需要映射驱动器,适合无本地主机的云环境,灵活性更强。

方法3:借助Azure Data Factory中转文件

  • 如果SSIS包部署在ADF的Azure-SSIS IR中,可以通过ADF先把Azure文件存储里的CSV转存到Blob存储:
    • 在ADF管道里添加复制活动,源选择Azure文件存储,目标选择Azure Blob存储
    • 再添加执行SSIS包活动,让SSIS通过Azure Blob存储连接管理器读取Blob中的CSV文件
  • 适合需要批量处理大量文件,且已经在使用ADF的场景。

内容的提问来源于stack exchange,提问作者Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:10:34