微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 SSIS 创建文件和文件夹到网络驱动器

如何解决使用 SSIS 创建文件和文件夹到网络驱动器

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

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

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

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

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

解决方法

我们有理由无法使用 UNC 路径 (\server\share\file.txt),并且在使用映射驱动器时也遇到了困难。我们最终使用的方法是在 ETL 流程中显式映射和取消映射驱动器。

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

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

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

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

再次执行流程任务

net use /delete Z:

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

,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。