我在 SQL Server 2008 R2 上使用 Service Broker,并且我正在注册一个存储过程,该过程具有多个选择语句,如下所示:
SELECT
A.Date
,A.Id
FROM
dbo.Appointment A
SELECT
P.Name
FROM
dbo.Person P
当我使用 C# 对象 SqlDependency OR SqlNotificationRequest 注册查询时,我会在 sys.conversation_endpoints 表中为查询中的每个选择语句获得一个条目。因此,通过上述查询,我添加了 2 个端点。当我在 dbo.Appointment 表中插入一行时,我会收到一个通知,该通知已发送到与第一个查询相关的端点。然后我在@conversation_handle 上调用 END CONVERSATION,但由于我将其注册为存储过程,我也想结束第二个查询的对话。我不确定如何执行此操作,因为两个条目都有不同的 conversation_group_id 列。
有没有办法使用 SqlDependency/SqlNotificationRequest 来做到这一点,还是我需要在我的存储过程中手动设置对话组并停止使用 SqlDependency/SqlNotificationRequest?