我的SqlDependency正常工作,並代理隊列和服務得到適當的下降,當應用程序存在(我做執行SqlDependency.Stop(...)爲終止之前,建議進程),但我注意到在應用程序關閉後,由SqlDependency創建的通知訂閱存在於表「sys.dm_qn_subscriptions」中。的SqlDependency訂閱不會從dm_qn_subscriptions在關機下降
如果我以後(應用程序後關機)執行的條件,應該讓這個訂閱火,它似乎火,因爲SQL Server將記錄在事件查看器中的信息的消息,大意是:
The query notification dialog on conversation handle '{3F03B693-C0A5-E211-A97B-E06995EBDB20}.' closed due to the following error: '
-8490
Cannot find the remote service 'SqlQueryNotificationService-0ea1f686-e554-4e25-aa7d-4f6d85171cc3' because it does not exist.'.
然後從「sys.dm_qn_subscriptions」中刪除訂閱。
注意:當應用程序處於活動狀態時,訂閱也會正常啓動。就我的應用程序而言,沒有任何錯誤,但它讓我擔心,一旦它們所依賴的代理隊列/服務被終止,訂閱就不會自動在數據庫系統表中被清除。這可以導致(至少)在數據庫中累積豐富的幻像/不死的訂閱記錄,並導致事件查看器中不必要的SQL Server清理消息(每個應用程序運行都會在「sys.dm_qn_subscriptions」中生成新的不連續記錄)。
這種行爲是否正常?事情可以做得更整潔嗎?
由於提前,
D.
非常感謝您的回覆,Remus!我真的很想知道我怎麼才能明確地注意到這個問題,因爲你的名字總是與Interweb上的SqlDependency建議有關: 另外一個問題,如果我可以的話:如果這是預期的行爲,我不希望重新實現SqlDependency,那麼我的最佳策略是讓SQL Server清理服務變得不那麼健談?任何準備使用的線索?如果不是,不用擔心:我會自己做一些額外的工作。 再次感謝和歡呼! – DP2010
'只是讓SQL Server清理服務變得不那麼煩瑣'恐怕這是不可能的... –
嗯,太糟糕了......然後再次感謝! – DP2010