私のSqlDependencyは正常に動作し、アプリケーションの終了時に Broker Queue と Service が適切に削除されます (プロセスを終了する前に推奨どおりにSqlDependency.Stop(...)を実行します) が、 SqlDependencyによって作成された通知サブスクリプションが存続していることに気付きましたアプリケーションがシャットダウンした後、テーブル「sys.dm_qn_subscriptions」でオンになります。
後で (アプリのシャットダウン後)、このサブスクリプションを起動する必要がある条件を実行すると、SQL Server がイベント ビューアーに情報メッセージを記録して、次のような効果があるため、起動したように見えます。
'{3F03B693-C0A5-E211-A97B-E06995EBDB20}.'
次のエラーのため、会話ハンドルのクエリ通知ダイアログが 閉じられました:'<?xml version="1.0"?><Error xmlns="http://schemas.microsoft.com/SQL/ServiceBroker/Error"><Code>-8490</Code><Description>Cannot find the remote service 'SqlQueryNotificationService-0ea1f686-e554-4e25-aa7d-4f6d85171cc3' because it does not exist.</Description></Error>'
。
その後、サブスクリプションは「sys.dm_qn_subscriptions」から削除されます。
注: サブスクリプションは、アプリケーションが有効な場合にも適切に起動します。私のアプリケーションに関する限り、何も問題はありませんが、サブスクリプションが依存するブローカー キュー/サービスが終了すると、データベース システム テーブルでサブスクリプションが自動的にワイプされないことが心配です。これにより、(少なくとも) 大量のファントム/アンデッド サブスクリプション レコードがデータベースに蓄積され、イベント ビューアーに不要な SQL Server クリーンアップ メッセージが表示される可能性があります (アプリを実行するたびに、"sys.dm_qn_subscriptions" に新しいアンデッド レコードが生成されます)。
この動作は正常ですか?物事をよりきれいにすることはできますか?