2

我正在使用 SQL 服务代理。我有一个队列,另一个进程正在向其中添加项目。每当将项目添加到队列中时,我都想运行存储过程。该过程将从队列中接收顶部项目并在存储过程中使用其信息。做这样的事情的正确语法是什么?在使用 Service Broker 队列时,我是使用典型的 SQL 触发器还是有什么特殊的用途?

4

1 回答 1

3

可以将触发的存储过程指定为队列定义的一部分。请参阅文档CREATE QUEUE- 特别是该ACTIVATION条款。

文档中的一个示例:

以下示例创建一个可用于接收消息的队列。当消息进入队列时,队列启动存储过程费用_procedure。存储过程以用户 ExpenseUser 的身份执行。队列最多启动存储过程的 5 个实例。

CREATE QUEUE ExpenseQueue
    WITH STATUS=ON,
    ACTIVATION (
        PROCEDURE_NAME = expense_procedure,
        MAX_QUEUE_READERS = 5,
        EXECUTE AS 'ExpenseUser' ) ;
于 2012-04-16T20:24:44.920 回答