从不同虚拟机

时间:2016-07-11 08:52:16

标签: sql-server asp.net-mvc azure ssis virtual-machine

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

第一个 VM是第二个和第三个VM的域控制器。

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

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

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

  

Foreach循环容器:警告:For Each文件   枚举器是空的。 For Each File枚举器完成了   找不到与文件模式匹配的文件,或者   指定的目录为空。

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

以下是我在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);

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

1 个答案:

答案 0 :(得分:0)

在IIS中,对于您要将ASP.NET MVC Web应用程序部署到的网站,请检查它属于哪个应用程序池以及该应用程序池的身份。用作应用程序池标识的帐户需要对您尝试访问和移动的路径具有文件系统级别的权限。