私はいくつかの調査を行っており、このシステムの配管のほとんどを見ることができますが、たとえば、テーブル内のデータが変更されたときに、SQLサーバーがリスナー(アプリケーション)にメッセージを返すタイミングをどのように認識しているかわかりません。まず、迷子になるまでの理解内容を説明します。
1)データベースでService Brokerを有効にし、いくつかの権限を設定する必要があります。
2)データベーススキーマをデプロイする必要があります。
3)aspnet_regsql.exeを使用して、データベースとデータをキャッシュする必要のあるテーブルのSQLキャッシュ依存関係を有効にします(この手順では、変更を追跡するテーブルと、変更をキャプチャしてそのテーブルの値をインクリメントするテーブルのトリガーを作成します)。
4).netアプリケーションでSQLキャッシュの依存関係を設定します。たとえば、Webアプリでは、ポーリング時間、接続文字列などの構成値を追加する必要があります。global.asax.csで依存関係を開始/停止し、キャッシュにアイテムを追加するときにSQLキャッシュの依存関係を追加します。
4a)依存関係を開始するときに発生することの一部は、インフラストラクチャがキュー、サービス、およびその後の通信とクリーンアップのためのsproc用にセットアップされることです。SQL Query Profilerを使用すると、アプリケーションがSQLサーバーからメッセージを受信するために、接続が確立され、通信チャネルがサービスに設定されていることを確認できます。
5)ここで私は混乱します。この時点で、基になるテーブルへのSQLキャッシュの依存関係を参照して、アプリケーションキャッシュにアイテムをキャッシュしました。これにより、行が変更された場合にアプリが変更を受け取ることができます。その行で手動で更新を実行すると、トリガーがヒットし、追跡テーブルの値が1ずつ増加していることがわかります。ただし、アプリケーションに戻る通信は表示されず、SQLクエリプロファイラーにも何も表示されません。キャッシュから削除されたアイテムです。また、データベースのキューには何も表示されません(動的アプリケーションキューも標準エラー/送信キューも表示されません)
私の質問は、データベース内のその追跡テーブルを監視して、このデータの変更を懸念するSQL依存関係にメッセージを送り返すことができるようにすることです。
どんな助けでも大歓迎です...私は多くのオンラインリファレンスを精査してきましたが、これについての具体的な説明を見つけることができません。