0

我有一个相当复杂且大型的数据库,其中包含大约 3000 多个对象(表/触发器/sps 组合)。我继承了这个数据库并对其进行重组可能需要 3-4 年的时间。同时,我需要为这些表上的任何插入/更新/删除实现 pub sub 功能。给定数量的表和现有查询可能查询通知(和 SQL 依赖项)将不起作用。我正在寻找的是一种在服务代理上推送更改(表中更改的内容 - 如记录 PK 和表名)的方法,以便我可以使用外部激活器然后检索更改,然后从那时起使用我的自定义 pub sub向前。

除了在服务代理上推送更改通知的方式之外,我几乎排好了所有的鸭子。

任何帮助/指针表示赞赏。谢谢。纳米PS。我确实四处寻找类似的帖子,但确实遇到了一些,他们提到的 MSDN 文章似乎都被删除了——不确定 MSDN 网站上发生了什么。

4

1 回答 1

1

对于外部激活器,请查看Microsoft SQL Server 2008 Feature Pack -“Microsoft SQL Server 2008 R2 Service Broker External Activator”。

对于控制台应用程序(处理消息),好主意是关注codeplex。有很好的例子。

放置事件通知(通知,将由外部激活器服务使用)代码如下所示:

Create Queue ExternalActivatorQueue;
Create Service ExternalActivatorService On Queue ExternalActivatorQueue
([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])

Create Event Notification NotifyExternalActivator
On Queue dbo.ProcessQueue
For QUEUE_ACTIVATION
To Service 'ExternalActivatorService', 'current database'

在队列中发送消息:

    Declare @h UniqueIdentifier;
    Declare @x xml = '<tag/>';
    Begin Dialog Conversation @h
    From Service MyTableService
        To Service 'ProcessService'
    With Encryption = OFF;

    Send On Conversation @h(@x)

我为使它工作所做的所有步骤都在这里,但只是在拉脱维亚语:)。实际上几乎有你需要的(当数据插入表时发送消息的触发器..)。

于 2012-05-15T14:48:06.247 回答