我们在部署网站时从 ASP.NET 运行 SSIS 包时遇到问题。我们将包加载到 MSDB 的集成服务服务器中。当我们从 SQL Server Management Studio 中尝试该包时,它运行正常。当我从 Visual Studio 执行代码时,服务器中加载的包运行正常。将页面部署到服务器时会出现问题:没有捕获异常并且没有记录错误,但是包没有执行。我们只是在 Windows 事件查看器中看到一条错误消息:“包”失败。”。ASP.NET 页面运行对 SQL Server 以及源 Excel 文件所在的共享具有“sysadmin”访问权限的帐户的模拟。
下面是调用 SSIS 包的代码:
public void executePkg(string pkgAddr, string pkgServer, int periodID)
{
logger.Info(string.Format("Execution of SSIS Package '{0}' in server '{1}' started.", pkgAddr, pkgServer));
string pidvar = "User::periodid";
string pkgLocation;
Package pkg;
Application app;
DTSExecResult pkgResults;
app = new Application();
pkgLocation = pkgAddr;
try
{
pkg = (Package)app.LoadFromSqlServer(pkgAddr, pkgServer, null, null, null);
Variables vars = pkg.Variables;
int varCount = vars.Count;
bool varExist = vars.Contains(pidvar);
pkg.VariableDispenser.LockOneForWrite(pidvar, ref vars);
vars[pidvar].Value = periodID;
pkg.Variables[pidvar].Value = periodID;
vars.Unlock();
pkgResults = pkg.Execute();
}
catch (Exception ex)
{
logger.Error(ex.Message);
}
}
任何帮助,将不胜感激。
注意:只是一个小的更正,ASP.NET 不再模拟,而是 AppPool 使用服务帐户运行。两种情况下的行为相同。