Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS项目-目录部署-环境变量(用于位置)访问映射到本地Z驱动器的文件服务器-SQL server代理问题_Sql Server_Ssis_Environment Variables_Sql Agent_Foreach Loop Container - Fatal编程技术网

Sql server SSIS项目-目录部署-环境变量(用于位置)访问映射到本地Z驱动器的文件服务器-SQL server代理问题

Sql server SSIS项目-目录部署-环境变量(用于位置)访问映射到本地Z驱动器的文件服务器-SQL server代理问题,sql-server,ssis,environment-variables,sql-agent,foreach-loop-container,Sql Server,Ssis,Environment Variables,Sql Agent,Foreach Loop Container,我有一个SSIS包,它使用For-Each循环容器读取大量文件。有一个数字 在这个包和SSMS中的Integration Services目录中,我创建了一个 此项目/包具有多个变量的环境 此包有许多环境变量。源位置有一个特定的环境变量 在我的DEV设置中,我可以通过以下方式传递源位置环境变量: C:\Data Repository\Files (in a local machine). 一切都好。包运行良好,对于每个循环,容器都读取文件 但是,在PROD设置中,我必须使用映射到Z驱动器

我有一个SSIS包,它使用For-Each循环容器读取大量文件。有一个数字 在这个包和SSMS中的Integration Services目录中,我创建了一个 此项目/包具有多个变量的环境

此包有许多环境变量。源位置有一个特定的环境变量

在我的DEV设置中,我可以通过以下方式传递源位置环境变量:

C:\Data Repository\Files    (in a local machine).
一切都好。包运行良好,对于每个循环,容器都读取文件

但是,在PROD设置中,我必须使用映射到Z驱动器的文件服务器

例如:

This PC > Data Repository (\\tordfs) (Z:) > Data Repository > X
变成

Z:\Data Repository\X
当我复制路径时

在SSIS包中,我可以将源位置的参数值设置为
Z:\datarepository\X
并且For-Each循环容器在SSDT/visualstudio中运行良好

现在,在SSIS包/项目部署到SSMS目录后,当我将
Z:\datarepository\X
作为源位置环境变量的值输入,并从目录手动执行包时,它工作正常。

但是,当我在上述过程中使用SQL Server代理时,会出现以下错误

For Each循环容器:警告:For Each文件枚举器为空。 For Each文件枚举器未找到任何 与文件模式匹配,或指定的目录为 空的

在For Each循环容器或SSIS目录中是否需要执行任何操作,以在使用SQL Server代理从目录执行期间消除上述错误

让我知道。

我有两个建议:

  • 尝试授予SQL数据库引擎服务帐户的读/写权限
    NT Service\MSSQL$
    (其中
    应替换为已安装的实例名称):

  • 尝试在SQL Server中映射Z:\网络驱动器:


  • 在Windows中,映射驱动器是用户特定的。因此,您必须为运行包的帐户映射驱动器。相反,在这两种情况下都使用UNC路径,而不是驱动器号

    比如:

    \\tordfs\Data Repository\Files
    

    运行包的帐户仍需要共享权限和文件夹权限,但不需要装入驱动器号。

    非常感谢。谢谢

    我想我已经解决了这个问题:

    在环境变量中,不能有Z:\datarepository\X

    变量必须具有如下值:

    \\tordfs\datarepository\datarepository\X

    虽然从SSMS Integration Services目录手动执行可以接受Z:\Data Repository\X作为环境变量的值

    SQL Server代理需要\\tordfs\datarepository\datarepository\X

    如果SQL Server代理在从目录中的环境读取时读取Z:\Data Repository\X

    我得到的每个循环容器张贴在上面


    也就是说,我正在使用SQL Server代理的代理来解决其他访问问题,例如使用文件系统任务将文件移动到文件夹中。

    谢谢David和Hadi;我下周有一个重要的生产交付;终于修好了!做得好!但是,既然您决定编写自己的答案,我认为您应该向其他人投票,而不是说谢谢,因为他们都是正确的。
    在环境变量中,您不能有Z:\datarepository\X
    这是错误的。您必须为SQL Server服务帐户添加权限,如Hadi的回答中所述。或者您必须使用您提到的UNC路径