我使用的服務代理上的SQL Server 2008 R2,和我註冊有多個SELECT語句這樣一個存儲過程:如何正確使用多重結果查詢(SQL Service Broker)調用「結束對話」?
SELECT
A.Date
,A.Id
FROM
dbo.Appointment A
SELECT
P.Name
FROM
dbo.Person P
當我使用C#對象的SqlDependency或SqlNotificationRequest註冊查詢,我在我的查詢中爲每個select語句在sys.conversation_endpoints表中獲取一個條目。所以通過上面的查詢,我得到了2個端點。當我向dbo.Appointment表中插入一行時,我得到一個單一的通知傳遞給與第一個查詢相關的端點。然後我在@conversation_handle上調用END CONVERSATION,但是因爲我將它註冊爲存儲過程,所以我想結束第二個查詢的對話。我不知道如何做到這一點,因爲兩個條目都有不同的conversation_group_id列。
有沒有辦法使用SqlDependency/SqlNotificationRequest來做到這一點,還是我需要在我的存儲過程中手動設置對話組並停止使用SqlDependency/SqlNotificationRequest?
我想我可以爲通知設置一個超時時間(15分鐘左右),如果他們還沒有開通,應該結束所有的會話,但我想立即清理這些通知。 – lehn0058