每当项目添加到服务代理队列时,如何执行存储过程?

时间:2012-04-16 19:42:38

标签: sql sql-server sql-server-2008 stored-procedures service-broker

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

1 个答案:

答案 0 :(得分:3)

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

来自documentation

的示例
  

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

CREATE QUEUE ExpenseQueue
    WITH STATUS=ON,
    ACTIVATION (
        PROCEDURE_NAME = expense_procedure,
        MAX_QUEUE_READERS = 5,
        EXECUTE AS 'ExpenseUser' ) ;