【问题标题】:Call SSIS from c# web app and display progress从 c# web app 调用 SSIS 并显示进度
【发布时间】:2011-06-24 02:38:54
【问题描述】:

我有一个 SSIS 包,可以将数据从 excel 文件加载到数据库中。

用户进入内网页面(普通的 c# .net 4.0 web 应用程序),选择他们要上传的文件,然后单击一个按钮。该按钮将文件复制到服务器,然后启动调用包的 SQL 作业。这很好用,但用户不知道工作何时完成。

向用户显示包已完成(或失败)的最佳方式是什么?

我看到过类似 - http://www.programminghelp.com/database/sqlserver/sql-server-integration-services-calling-ssis-package-in-c/ 的链接,但这是针对 C# 控制台项目的。使用 Web 应用程序执行此操作的最佳方法是什么?

【问题讨论】:

    标签: c# sql-server-2008 ssis


    【解决方案1】:

    有很多方法可以做到这一点,但如果您正在寻找一种简单的方法,那么您可以使用 System.Net.Mail 命名空间中的SmtpClient class 在工作完成时向用户发送电子邮件。 (该页面上有一个很好的简单代码 sn-p,您可以轻松地重复使用。)当然,您必须设置一个发送帐户(例如 no-reply@myAutomatedJobThing.com)并知道用户的电子邮件地址。

    这是否是您的方案中的最佳解决方案尚有争议,但我已经看到它在许多系统中使用(并且我自己也使用它),其中这样的过程需要相当长的时间,比如几分钟或更长时间.如果您的导入只需要几秒钟,那么电子邮件解决方案可能会过大。

    一个更简单的 AJAX 风格的解决方案可能涉及浏览到一个页面(在启动之后),该页面通过计时器轮询作业并在页面中显示进度。即使是自动重新加载也可能有效。为此您需要的元数据是用户执行的作业的唯一标识符。

    【讨论】:

    • 我们已经在 SSIS 包中完成了这项工作。在完成或失败时发送电子邮件。如果包经过 8 个不同的步骤并花费 5 分钟,我们想让用户知道第 1 步或第 2 步(等等)已经完成。无论如何要显示这个?
    • 是的。但是您必须从页面设置一个异步进程(想想 AJAX)才能留在页面上并接收进度更新。
    • 查看我的更新答案。您也许可以使用自动刷新页面。不知道为什么我假设您不想使用 AJAX,但这是您的选择之一。
    • 这似乎是我们采取的路径(自动刷新)。你手头有任何参考资料吗? AJAX 会很酷,但我们可能需要投入更多的工作。
    • 有很多方法可以走,但我要继续说的是您使用的是 C# 并且它是 Web 应用程序。那是一个很大的世界。我建议按照这些思路发布另一个问题,包括您的具体技术和版本,当然还有意图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多