从 C# Web 应用程序调用 SSIS 并显示进度

发布于 2024-11-16 20:14:19 字数 500 浏览 2 评论 0原文

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

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

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

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

I have an SSIS package that loads data from an excel file to a database.

The user goes to the intranet page (normal c# .net 4.0 web app), selects the file they want to upload, and then clicks a button. The button copies the file to the server and then starts a SQL job that calls the package. This works fine and dandy but the user has no idea when the job finishes.

What's the best way to show the user that the package has completed (or failed)?

I have seen links like - http://www.programminghelp.com/database/sqlserver/sql-server-integration-services-calling-ssis-package-in-c/ but this is for C# Console Project. What's the best way to do this with a web application?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浊酒尽余欢 2024-11-23 20:14:19

有多种方法可以做到这一点,但如果您正在寻找一种简单的方法,那么您可以使用 SmtpClient 类,用于在作业完成时向用户发送电子邮件。 (该页面上有一个很好、简单的代码片段,您可以轻松重用。)当然,您必须设置一个发送帐户([电子邮件受保护])并了解用户的电子邮件地址。

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

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

There are a number of ways to do this but if you're looking for an easy way then you could use the SmtpClient class in the System.Net.Mail namespace to send an email to the user when the job finishes. (There's a nice, simple code snippet on that page that you could reuse readily.) Of course you would have to have a sending account set up ([email protected] for example) and know the user's email address.

Whether this is the best solution in your scenario is debatable but I've seen it employed (and employed it myself) for a number of systems where such a process takes an appreciable amount of time, say a couple of minutes or longer. If your import just takes a few seconds then the email solution might be overkill.

A simpler, AJAX-style solution might involve browsing to a page (after initiation) that polls the job via a timer and displays the progress in-page. Even an auto-reload might work. The piece of metadata you would need for this is a unique identifier for the job that the user executed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文