环境描述
我有一个从 asp.net 执行的 SSIS 任务,该包通过 UNC 路径从 excel 文件中获取数据,并将数据放入 sql server 数据库中。我已将 SSIS 部署到文件系统,它具有 Windows 身份验证数据库连接,并且 IIS 用户具有数据库访问权限。我可以作为用于托管 Web 应用程序的 AppPoolUser 登录并打开/修改有问题的文件,以便获得这些基本权限。Web App 是在 x86 中编译的。
当它工作时:
当从 Visual Studio (ctrl + shift + W) 运行时,它工作正常,每件事都成功完成。
当它不起作用时:
从客户端浏览器运行时。它上传文件但在包中失败。
我的问题
客户端和服务器有什么不同,我该如何让它工作?我的印象是,在运行 Web 应用程序时,所有连接都通过 AppPool 用户,所以它应该在包含的任何机器服务器上表现相同?我需要这样做而不需要 CMD。
c#代码运行SSIS包
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SqlServer.Dts.Runtime;
public partial class Pages_Quality : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Upload_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string fileExt =
System.IO.Path.GetExtension(FileUpload1.FileName);
if (FileUpload1.FileName == "Breached.xlsx")
{
try
{
FileUpload1.SaveAs("*:\\***\\***\\" +
FileUpload1.FileName);
Label1.Text = "Upload Done";
Application app = new Application();
Package package = app.LoadPackage(@"*:\**\**\Quality.dtsx", null);
DTSExecResult result = package.Execute();
Label2.Text = (result.ToString());
}
catch (Exception ex)
{
Label1.Text = "ERROR: " + ex.Message.ToString();
}
}
else
{
Label1.Text = "Only Breached.xls is allowed!";
}
}
else
{
Label1.Text = "You have not specified a file.";
}
}
}