1

环境描述

我有一个从 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.";
        }
    }
}
4

2 回答 2

0

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

检查那个。

问候

于 2014-03-25T07:59:39.360 回答
0

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

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

希望这会帮助你。

问候, 桑迪普

于 2013-12-03T11:20:20.230 回答