2013-10-02 120 views
1

说明环境执行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."; 
     } 
    } 
} 
+2

权限.... –

+0

我米奇同意这可能是一个安全环境问题。避免安全上下文问题的一种可能方法是创建一个执行SSIS包的存储过程。 –

+0

你怎么知道它失败?从返回值?你有日志条目吗?打开并记录并获取更多信息。 –

回答

0

C#代码是否安装在机器(Web服务器在您的案件)SSIS服务或SSIS组件(客户端工具),你在哪里部署和运行应用程序?

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

希望这会帮助你。

问候, 的Sandip

0

如果您使用的是Excel源连接,发生了最有可能的错误,因为在32位模式下的Excel驱动程序的工作而已,而当您尝试从网络调用它,它是在64执行位。

检查。

问候