0

我创建了 SSIS 包,它在输出位置使用文件系统任务创建新文件夹,然后使用数据流任务在该文件夹中创建数据文件。

我创建了一个映射到 azure blob 的网络驱动器。因此,我将网络驱动器路径(如 Z:\)传递给包,并按预期创建文件夹和文件,这也反映在 azure blob 上。

现在,当我通过 SQL 代理作业安排此包时,我收到错误,即无法从文件系统任务中找到路径 Z:\folderName 的一部分。所以我认为这是因为 sql server 代理服务没有通过我的用户 id 运行。所以我用我的凭据启动了 sql server agent,但它仍然给我同样的错误。

注意:我的 ID 不能直接访问 azure blob,网络驱动器只能由我的 ID 访问。

我们目前正在使用 azure blob 进行开发,但我们可能会使用单独的服务器来存储文件,因此我无法使用 SSIS azure service pack 中提供的灵活文件系统任务

4

3 回答 3

2

我们有一些原因不能使用 UNC 路径 (\server\share\file.txt),而且我们也遇到了映射驱动器的问题。我们最终使用的方法是显式映射和取消映射驱动器,作为 ETL 流程的一部分。

执行进程任务 - 挂载驱动器

我们使用批处理文件来挂载驱动器,因为它使我们的工作更轻松,但命令将采用类似的形式

net use Z: \\server\share mypassword user@azure

执行流程任务 - 卸载驱动器

再次,执行流程任务

net use /delete Z:

我们最终完成了一个我不记得我们是如何完成它的前导步骤,但我们会在尝试安装驱动器之前测试驱动器是否已被卸载。我认为是文件系统任务来查看驱动器是否存在,如果存在,那么我们复制了卸载任务。

于 2021-05-13T15:17:49.773 回答
0

我能够使用凭据管理器解决此问题。我使用域用户登录,然后将 \\server、userid 和 password 等天蓝色路径添加到 windows 凭据。然后使用相同的域用户 id 启动 sql server 代理服务。将文件路径设置为 \\server\share 类似于我在 Windows 凭据中提供的 ssis 包配置。这样做之后,我能够通过 sql 代理作业成功执行包。

于 2021-05-14T10:22:30.913 回答
0

我能够使用脚本任务(C# 代码)来移动数据来解决这个问题。我为 Target ShareFolder 生成了一个项目参数,并将其用作脚本任务的 ReadOnlyVariable。目标共享文件夹已经映射为我的本地 PC 以及应用程序服务器上的网络驱动器。

于 2021-10-14T21:51:58.240 回答