0

我在 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?

4

1 回答 1

2

经过大量搜索,我确定正确清理查询通知的唯一方法是对其设置超时并过滤已在应用程序层处理的事件。

于 2013-07-30T17:48:00.083 回答