2011-06-24 9 views
4

ExcelファイルからデータベースにデータをロードするSSISパッケージがあります。C#WebアプリケーションからSSISを呼び出して進捗状況を表示

ユーザーはイントラネットページ(通常のc#.net 4.0 Webアプリケーション)に移動し、アップロードするファイルを選択してボタンをクリックします。ボタンはファイルをサーバーにコピーし、パッケージを呼び出すSQLジョブを開始します。これはうまく動作しますが、ユーザーはジョブがいつ終了するか分かりません。

パッケージが完了した(または失敗した)ことをユーザーに示す最も良い方法は何ですか?

私は - http://www.programminghelp.com/database/sqlserver/sql-server-integration-services-calling-ssis-package-in-c/のようなリンクを見ましたが、これはC#Console Project用です。これをWebアプリケーションで行うにはどうすればよいでしょうか?

答えて

2

これを行うにはいくつかの方法がありますが、簡単な方法を探している場合は、System.Net.Mail名前空間のSmtpClient classを使用して、ジョブが完了したときに電子メールをユーザーに送信できます。 (そのページに素早く簡単に再利用できる素敵なコードスニペットがあります)もちろん、送信アカウント([email protected]など)を設定して、ユーザーのメールアドレスを知っておく必要があります。

これはあなたのシナリオの中で最善の解決策であるかどうかは議論の余地がありますが、私はそのようなプロセスがかなりの時間を要する数多くのシステムについて採用していますより長いです。あなたのインポートがちょうど数秒かかる場合、電子メールの解決策は過度のものになるかもしれません。

より単純なAJAXスタイルのソリューションでは、タイマーを介してジョブをポーリングしてページ内の進行状況を表示するページ(開始後)を参照する必要があります。自動リロードさえ機能するかもしれません。これに必要なメタデータは、ユーザーが実行したジョブの一意の識別子です。

+0

これはSSISパッケージで行いました。完了時または失敗時に電子メールを送信します。パッケージが8つの異なるステップを経て5分かかった場合、ステップ1またはステップ2(など)が完了したことをユーザーに知らせる必要があります。とにかくこれを表示するには? – SqlSandwiches

+0

はいあります。しかし、あなたはそのページに留まるために(AJAXと思う)ページから非同期プロセスをセットアップし、進行状況の更新を受け取らなければなりません。 –

+0

私の更新された回答を参照してください。自動更新ページを使用することができます。どうしてあなたがAJAXを使いたくないと思っているのか分かりませんが、それはあなたの選択肢の1つです。 –

関連する問題