使用ASP.Net执行SSIS包

时间:2013-10-02 10:45:13

标签: c# asp.net ssis

环境描述

我有一个从asp.net执行的SSIS任务,该包通过UNC路径从excel文件获取数据,并将数据放入sql server databaase。我已将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.";
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您在部署和运行应用程序的机器(您的情况下是Web服务器)中是否安装了SSIS服务或SSIS组件(客户端工具)?

您可以在使用Visual Studio开发和调试应用程序应用程序的同一个开发PC中进行出价。通常,SSIS组件与BID一起安装,因此您不需要SSIS服务来运行程序包。这可能是您的开发PC中的包执行正常的情况。但是,它永远不会在您的Web服务器中工作,因为您的Web服务器中没有安装这些组件。

希望这会对你有所帮助。

此致 Sandip

答案 1 :(得分:0)

如果您使用Excel源连接,很可能是因为excel驱动程序仅在32位模式下工作而发生错误,而当您尝试从Web调用它时,它会在64位下执行。

检查一下。

此致