1

私のアプリケーションソリューション(多くのアプリ、1つのデータベース、一部のサードパーティ)でのポーリングを減らしたいのですが、顧客は何が起こっているのかについての最新のGUIステータスを望んでいます。SQL Serverテクノロジを使用して、.NETコードを介してテーブルまたはデータベースにイベントハンドラーを追加することは可能ですか?

これが私が出くわしたいくつかの解決策です:

  • 外部アクティベーションを使用したSQLServerService Broker-新しいアプリケーションのみを起動し、実際には「イベントハンドラー」のようなシナリオは起動しません
  • CLRストアドプロシージャ-機能が制限されていますが、GUIステータス画面にイベントを取得するときに同じ問題が発生することは明らかです
  • カスタム化-SQLServerに(XPコマンドシェルを使用して)フォルダー内に修飾イベントが発生したときにトリガーを使用してファイルを作成させ、FileSystemWatcherオブジェクトにファイル変更イベントを取得させてその方法でトリガーさせるなど、クレイジーなことを行うことができます。でもそれはどういうわけか悪臭がします。
4

1 に答える 1

3

SqlDependencyを見たいと思うかもしれません。唯一の注意点は、ドキュメントに記載されているように、

SqlDependency は、データベースに対してアクティブな依存関係を持つ比較的少数のサーバーが存在する ASP.NET または中間層サービスで使用するように設計されています。これは、数百または数千のクライアント コンピューターが 1 つのデータベース サーバーに対してセットアップされた SqlDependency オブジェクトを持つクライアント アプリケーションで使用するようには設計されていません。データが変更されたときに信頼性の高い 1 秒未満の通知が必要なアプリケーションを開発している場合は、SQL Server Books Online の通知の計画に関するトピックの「効率的なクエリ通知戦略の計画」および「クエリ通知の代替手段」のセクションを確認してください。

一般に、上記のステートメントはほとんどの SQL Server クライアント アプリケーションに当てはまりますが、これが問題にならないことを願っています。

于 2012-04-18T18:46:02.810 に答える