Sql server 从运行在不同虚拟机上的ASP.NET MVC web应用程序执行SSIS pckage

Sql server 从运行在不同虚拟机上的ASP.NET MVC web应用程序执行SSIS pckage,sql-server,asp.net-mvc,azure,ssis,virtual-machine,Sql Server,Asp.net Mvc,Azure,Ssis,Virtual Machine,有三个Azure虚拟机在同一Azure帐户下运行 第一个虚拟机是第二个和第三个虚拟机的域控制器 第二个虚拟机具有Windows Server 2012 R2操作系统。此VM已安装MS SQL Server 2014,并且已部署所有SSIS包。某些SSIS包负责将一些文件从一个文件夹移动到连接(映射)到此VM的网络驱动器内的另一个文件夹 第三虚拟机也有Windows Server 2012 R2操作系统。此虚拟机正在运行ASP.NET MVC web应用程序,它负责执行部署在第二个虚拟机中的SSI

有三个Azure虚拟机在同一Azure帐户下运行

第一个虚拟机是第二个和第三个虚拟机的域控制器

第二个虚拟机具有Windows Server 2012 R2操作系统。此VM已安装MS SQL Server 2014,并且已部署所有SSIS包。某些SSIS包负责将一些文件从一个文件夹移动到连接(映射)到此VM的网络驱动器内的另一个文件夹

第三虚拟机也有Windows Server 2012 R2操作系统。此虚拟机正在运行ASP.NET MVC web应用程序,它负责执行部署在第二个虚拟机中的SSIS包

问题:web应用程序能够执行SSIS包,但文件不会从一个文件夹移动到另一个文件夹。我查看了包执行日志,看到一条警告消息,如下所示:

Foreach循环容器:警告:每个文件的 枚举数为空。为每个文件枚举器执行的 找不到任何与文件模式匹配的文件,或 指定的目录为空

这似乎是一些许可问题,但我无法确定真正的原因

以下是我在ASP.NET MVC web应用程序中用于执行包的SSIS包执行C#代码:

// SSIS server object with connection
IntegrationServices ssisServer = new IntegrationServices(ssisConnection);
// The reference to the package which you want to execute
PackageInfo ssisPackage = ssisServer.Catalogs["SSISDB"].Folders[folderName].Projects[projectName].Packages[packageName];
// Add execution parameter to override the default asynchronized execution. If you leave this out the package is executed asynchronized
Collection<PackageInfo.ExecutionValueParameterSet> executionParameter = new Collection<PackageInfo.ExecutionValueParameterSet>();
            executionParameter.Add(new PackageInfo.ExecutionValueParameterSet { ObjectType = 50, ParameterName = "SYNCHRONIZED", ParameterValue = 1 });
// Get the identifier of the execution to get the log
long executionIdentifier = ssisPackage.Execute(false, null, executionParameter);
//具有连接的SSIS服务器对象
IntegrationServices SSIServer=新的IntegrationServices(SSIConnection);
//对要执行的包的引用
PackageInfo ssisPackage=ssisServer.Catalogs[“SSISDB”]。文件夹[folderName]。项目[projectName]。包[packageName];
//添加执行参数以覆盖默认异步执行。如果不考虑这一点,则包将异步执行
Collection executionParameter=新集合();
添加(新的PackageInfo.ExecutionValueParameterSet{ObjectType=50,ParameterName=“SYNCHRONIZED”,ParameterValue=1});
//获取执行的标识符以获取日志
long executionIdentifier=ssisPackage.Execute(false,null,executionParameter);

注意:如果我直接从SQL Server Management Studio执行SSIS包,那么它将按预期工作(移动文件和其他内容)。

在IIS中,对于要部署ASP.NET MVC web应用程序的网站,检查它所属的应用程序池以及应用程序池的标识是什么。用作应用程序池标识的帐户需要对您尝试访问和移动的路径具有文件系统级权限