说明环境执行SSIS包使用ASP.Net
我有一个SSIS任务,从asp.net执行,包从Excel文件在UNC路径获取数据和数据置于一个SQL Server databaase 。我已将SSIS部署到文件系统,它具有Windows身份验证数据库连接,IIS用户具有数据库访问权限。我可以登录为我用来托管Web应用程序的AppPoolUser,并打开/修改有问题的文件,以便这些基本权限在那里。 Web应用程序在x86中编译。
当它的工作原理:
当从Visual Studio(Ctrl + Shift + W)运行工作正常,每一件事情是succefuly完成。
当它不工作:
当从客户端浏览器中运行。它上传文件,但在包中失败。
我的问题
是什么样的客户端和服务器不同,我怎么做工作?我的印象是,当运行Web应用程序时,所有连接都通过AppPool用户,因此它应该在任何包含的机器服务器上表现相同?我需要这样做,而不需要CMD。
运行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.";
}
}
}
权限.... –
我米奇同意这可能是一个安全环境问题。避免安全上下文问题的一种可能方法是创建一个执行SSIS包的存储过程。 –
你怎么知道它失败?从返回值?你有日志条目吗?打开并记录并获取更多信息。 –