【问题标题】:SSIS pckage execution from ASP.NET MVC web application running in different virtual machine从在不同虚拟机中运行的 ASP.NET MVC Web 应用程序执行 SSIS 包
【发布时间】:2016-11-13 03:41:39
【问题描述】:

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

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

第二个虚拟机有 Windows Server 2012 R2 操作系统。此 VM 安装了 MS SQL Server 2014,并部署了所有 SSIS 包。一些 SSIS 包负责将一些文件从一个文件夹移动到附加(映射)到此 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 包,那么它会按预期工作(移动文件和其他内容)。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多