4

多くのデータ フロー タスクを含む長時間実行される SSIS パッケージがあります ( SSIS の詳細については、この質問を参照してください)。これらのタスクの合間に、IIS 7.0 でホストされているイントラネット向けの ASP.NET MVC 4 アプリで実行されている SignalR ハブにリアルタイムのステータス更新を送信して、ユーザーが進行状況を監視できるようにしたいと考えています。

SSIS から SignalR ハブ クライアントに状態更新メッセージを送信する最良の方法は何ですか?

次の SSIS タスクは、外部システムにメッセージを配信できるようです。

  • SSIS メッセージ キュー タスク:サーバー上で MSMQ プライベート キューを使用するのは、最初は簡単に思えますが、MSMQ は少し古く、保守されておらず、ドキュメントも不足しています。また、既存の SignalR 対応 Web アプリと統合する明白な方法もありません。MSMQ への接続を備えたセルフホステッド SignalR ハブについての記事がありますが、このアプローチは ASP.NET MVC アプリ内で可能でしょうか?

  • SSIS Execute SQL Task:私は既に SSIS からこれを行っています (jobs テーブルの status_id を更新しています)。難しいのは、これらの変更を検出し、SignalR ハブを介してルーティングすることです。SignalRは既に SQL Server を使用してスケール アウトできますが、この手法では、最初からすべてのメッセージがSignalR ハブ経由で受信されることを前提としていますが、ここでは当てはまりません。他の人はSqlDependencyの使用について話していますが、それによって ASP.NET アプリが DB テーブルを監視し、すべての更新の通知を受けることができるでしょうか?

  • SSIS スクリプト タスクを使用して HTTP 要求を送信する (C#):振り返ってみると、これが最も簡単な方法のようですが、いくつか注意点があります。私が構築している Web アプリケーションは NTLM 認証されているため、System.Net.WebRequest を認証と共に使用する必要があります。これには、SSIS 内で問題がある場合とない場合があります。

#3に関する更新:SSISパッケージはSQL Server内で実行されています。を使用してサイトに認証すると、実行中の Windows アカウントは認証に失敗しSystem.Net.CredentialCache.DefaultNetworkCredentialsます。したがって、WebRequest は、別の NTLM 資格情報を使用できる場合 (つまり、パッケージが実行されているアカウントから派生していない場合) にのみ、このシナリオで機能するようです。サイトは基本的な HTTP 認証を受け入れません。

更新 2: System.Net.NetworkCredentials を任意のドメイン/ユーザー/パスワードでインスタンス化し、WebRequest に適用できるようです。SSISタスク内で本番環境でこれをまだテストしていません。多くの同一の SSIS スクリプト タスクを維持する (または再利用可能な SSIS タスクを開発する) ことはかなり面倒であるため、問題は未解決のままです。もっと簡単で、高速で、保守しやすいソリューションがあるかもしれません。

報奨金に関する更新 3: 400 担当者の報奨金は、実行可能な戦略を提案し、少なくともいくつかの基本的な詳細を提供する最良の回答に授与されます。

4

3 に答える 3

1

ローカルにインストールされたntlmaps (カスタム NTML 資格情報を有効にするプロキシ サーバー) を使用して #3 を採用し、構成ファイルでネットワーク設定を適切に定義します。

于 2013-09-10T12:58:31.817 に答える
1

そのためには、SQL Server サービス ブローカーを使用できると思います。

さらに、誰かが同様のことを達成したようです: SignalR を使用して SQL Server から Web アプリケーションにデータをプッシュする

于 2013-09-04T18:04:02.327 に答える