我正在使用SQL Service Broker。我有一个队列,另一个进程正在添加项目。我想在项目添加到队列时运行存储过程。该过程将从队列中接收顶级项目并在存储过程中使用其信息。做这样的事情的正确语法是什么?我是否使用典型的SQL触发器,或者在使用Service Broker队列时是否有特殊用途?
答案 0 :(得分:3)
可以将触发的存储过程指定为队列定义的一部分。
请参阅CREATE QUEUE
的文档 - 特别是ACTIVATION
子句。
以下示例创建可供接收的队列 消息。队列在启动时启动存储过程expense_procedure 消息进入队列。存储过程以用户身份执行 ExpenseUser。队列最多启动5个存储的实例 过程
CREATE QUEUE ExpenseQueue WITH STATUS=ON, ACTIVATION ( PROCEDURE_NAME = expense_procedure, MAX_QUEUE_READERS = 5, EXECUTE AS 'ExpenseUser' ) ;