このトピックについて多くのスレッドが開かれましたが、私の問題に対する答えがないように見えるので、試してみます..
システム:Windows Server 2012 SQL Server 2012 Enterprise エディション
問題 : SQLDependency を使用して、アプリケーションでクエリ通知を使用できるようにしています。これは、独自のサービス、キュー、およびプロシージャを作成することを意味します。
質問 1: ストアド プロシージャを見ると、トップ 0 を受け取っていることがわかります。トップ 0 を行うとはどういう意味ですか?
さて、実際の問題です..時折、エラーログが次のメッセージでいっぱいになります(開くことができないほどです): クエリ通知配信は、ダイアログ 'X' でメッセージを送信できませんでした.... Service Broker: '会話ハンドル X が見つかりません。メッセージは、同じ conversation_handle で表示されるか、最も異なる 3 つのハンドルで表示されます。
sys.conversation_endpoints からその会話をクエリすると、それが表示され、 is_system = 1 (STARTED_OUTBOUND) としてマークされます。
エラー 9245 に関するアラートを追加して、エラーが発生したときにその理由を特定しようとしました。メッセージ「前回の時間間隔中に X クエリ通知エラーが抑制されました」では、X は膨大で 10,000 を超えています。そのような数の通知がないため、この数は再試行に関連していると思います。
最初は、「DialogTimer」メッセージに関連している可能性があると思いました。その特定のメッセージの会話を終了すると、メッセージが停止することに気付いたからですが、最近は機能しませんでした。 .
アプリケーション プールにリサイクルするとすぐに発生しますが、ログには SQLDependency.Stop が呼び出されます。
さらに詳細が必要な場合はお知らせください。あなたの助けに感謝、