使用 ASP.Net 执行 SSIS 包
本文关键字:SSIS 执行 Net ASP 使用 | 更新日期: 2023-09-27 18:33:38
环境描述
我有一个从 asp.net 执行的SSIS任务,该包通过UNC路径从excel文件中获取数据,并将数据放入sql服务器databaase中。我已将 SSIS 部署到文件系统,它具有 Windows 身份验证数据库连接,IIS 用户具有数据库访问权限。我可以以用于托管 Web 应用程序的 AppPoolUser 身份登录并打开/修改相关文件,以便获得这些基本权限。Web 应用以 x86 编译。
当它起作用时:
当从Visual Studio(ctrl + shift + W(运行时,它工作正常,每件事都成功完成。
当它不起作用时:
从客户端浏览器运行时。 它上传文件但在包中失败。
我的问题
客户端和服务器有什么不同,如何使其工作?我的印象是,当运行 Web 应用程序时,所有连接都通过 AppPool 用户,因此它在包含的任何机器服务器上的行为应该相同?我需要在不需要 CMD 的情况下这样做。
运行 SSIS 包的 c# 代码
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.";
}
}
}
部署和运行应用程序的计算机上(在本例中为 Web 服务器(中安装了 SSIS 服务或 SSIS 组件(客户端工具(?
你可能在具有 Visual Studio 的同一开发电脑中出价,以开发和调试应用程序应用程序。通常,SSIS 组件与 BID 一起安装,因此不需要 SSIS 服务来运行包。这可能是您的软件包在开发电脑中执行正常的情况。但是,它永远不会在您的 Web 服务器中工作,因为您的 Web 服务器中没有安装这些组件。
希望这对您有所帮助。
问候桑迪普
如果您使用的是 Excel 源连接,则很可能发生错误是因为 excel 驱动程序仅在 32 位模式下工作,而当您尝试从 Web 调用它时,它会在 64 位模式下执行。
检查一下。
问候