SSIS 项目 - 目录部署 - 环境变量(用于位置)访问映射到本地 Z 驱动器的文件服务器 - SQL 服务器代理问题
SSIS Project - Catalog Deployment - Environment Variable (for location) accessing file server mapped to a local Z drive - SQL Server Agent issue
我有一个 SSIS 包,它使用 For Each 循环容器读取大量文件。有一些
这个包中的参数以及 SSMS 的集成服务目录中,我创建了一个
此 project/package.
具有许多变量的环境
这个包有很多环境变量。源位置有一个特定的环境变量。
在我的 DEV 设置中,我能够将 Source Location 环境变量传递为:
C:\Data Repository\Files (in a local machine).
一切都很好。包运行完美,For Each Loop Container works 读取文件。
但是,在 PROD 设置中,我必须使用映射到 Z 驱动器的文件服务器。
例如:
This PC > Data Repository (\tordfs) (Z:) > Data Repository > X
变成
Z:\Data Repository\X
当我复制路径时。
在 SSIS 包中,我可以将源位置的参数值设置为 Z:\Data Repository\X
For Each Loop Container 在 SSDT/Visual Studio 中运行良好。
现在,在将 SSIS package/project 部署到 SSMS 目录后,当我将 Z:\Data Repository\X
作为源位置环境变量的值输入时,我手动执行包 来自目录,它工作正常。
但是,当我使用 SQL 服务器代理 进行上述过程时,我得到 以下错误 :
For Each Loop Container:Warning: The For Each File enumerator is empty.
The For Each File enumerator did not find any files that
matched the file pattern, or the specified directory was
empty.
我需要在 For Each Loop Container 或 SSIS Catalog 中做些什么来消除使用 SQL Server Agent 从 Catalog 执行期间的上述错误吗?
告诉我。
我有2条建议:
尝试将 read/write 权限授予 SQL 数据库引擎服务帐户 NT SERVICE\MSSQL$<Instance Name>
(其中 <Instance Name>
应替换为安装的实例名称):
尝试在 SQL 服务器中映射 Z:\ 网络驱动器:
在 Windows 中映射的驱动器是 user-specific。因此,您必须为帐户 运行 映射驱动器包。在这两种情况下都使用 UNC 路径,而不是驱动器号。
所以像这样:
\tordfs\Data Repository\Files
帐户 运行 包仍需要共享权限和文件夹权限,但不需要安装盘符。
非常感谢大家。欣赏一下。
我想我已经解决了这个问题:
环境变量中不能有Z:\DataRepository\X
变量必须具有如下值:
\\tordfs\Data Repository\Data Repository\X
虽然从 SSMS 集成服务目录手动执行可以接受 Z:\Data Repository\X 作为环境变量的值,
SQL Server Agent 需要 \\tordfs\Data Repository\Data Repository\X
如果 SQL 服务器代理在从目录中的环境读取时读取 Z:\Data Repository\X,
我得到了上面发布的 For Each Loop Container!
也就是说,我正在使用 SQL 服务器代理的代理来解决其他访问问题,例如使用文件系统任务将文件移动到文件夹中。
我有一个 SSIS 包,它使用 For Each 循环容器读取大量文件。有一些 这个包中的参数以及 SSMS 的集成服务目录中,我创建了一个 此 project/package.
具有许多变量的环境这个包有很多环境变量。源位置有一个特定的环境变量。
在我的 DEV 设置中,我能够将 Source Location 环境变量传递为:
C:\Data Repository\Files (in a local machine).
一切都很好。包运行完美,For Each Loop Container works 读取文件。
但是,在 PROD 设置中,我必须使用映射到 Z 驱动器的文件服务器。
例如:
This PC > Data Repository (\tordfs) (Z:) > Data Repository > X
变成
Z:\Data Repository\X
当我复制路径时。
在 SSIS 包中,我可以将源位置的参数值设置为 Z:\Data Repository\X
For Each Loop Container 在 SSDT/Visual Studio 中运行良好。
现在,在将 SSIS package/project 部署到 SSMS 目录后,当我将 Z:\Data Repository\X
作为源位置环境变量的值输入时,我手动执行包 来自目录,它工作正常。
但是,当我使用 SQL 服务器代理 进行上述过程时,我得到 以下错误 :
For Each Loop Container:Warning: The For Each File enumerator is empty. The For Each File enumerator did not find any files that matched the file pattern, or the specified directory was empty.
我需要在 For Each Loop Container 或 SSIS Catalog 中做些什么来消除使用 SQL Server Agent 从 Catalog 执行期间的上述错误吗?
告诉我。
我有2条建议:
尝试将 read/write 权限授予 SQL 数据库引擎服务帐户
NT SERVICE\MSSQL$<Instance Name>
(其中<Instance Name>
应替换为安装的实例名称):尝试在 SQL 服务器中映射 Z:\ 网络驱动器:
在 Windows 中映射的驱动器是 user-specific。因此,您必须为帐户 运行 映射驱动器包。在这两种情况下都使用 UNC 路径,而不是驱动器号。
所以像这样:
\tordfs\Data Repository\Files
帐户 运行 包仍需要共享权限和文件夹权限,但不需要安装盘符。
非常感谢大家。欣赏一下。
我想我已经解决了这个问题:
环境变量中不能有Z:\DataRepository\X
变量必须具有如下值:
\\tordfs\Data Repository\Data Repository\X
虽然从 SSMS 集成服务目录手动执行可以接受 Z:\Data Repository\X 作为环境变量的值,
SQL Server Agent 需要 \\tordfs\Data Repository\Data Repository\X
如果 SQL 服务器代理在从目录中的环境读取时读取 Z:\Data Repository\X,
我得到了上面发布的 For Each Loop Container!
也就是说,我正在使用 SQL 服务器代理的代理来解决其他访问问题,例如使用文件系统任务将文件移动到文件夹中。