【问题标题】:How do I execute a stored procedure whenever an item is added to a service broker queue?每当将项目添加到服务代理队列时,如何执行存储过程?
【发布时间】:2012-04-16 19:42:37
【问题描述】:
我正在使用 SQL 服务代理。我有一个队列,另一个进程正在向其中添加项目。每当将项目添加到队列中时,我都想运行存储过程。该过程将从队列中接收顶部项目并在存储过程中使用其信息。做这样的事情的正确语法是什么?在使用 Service Broker 队列时,我是使用典型的 SQL 触发器还是有什么特殊的用途?
【问题讨论】:
标签:
sql
sql-server
sql-server-2008
stored-procedures
service-broker
【解决方案1】:
可以将触发的存储过程指定为队列定义的一部分。
请参阅 CREATE QUEUE 的文档 - 特别是 ACTIVATION 子句。
来自documentation的例子:
以下示例创建一个可用于接收的队列
消息。队列在什么时候启动存储过程expense_procedure
一条消息进入队列。存储过程以用户身份执行
费用用户。队列最多启动 5 个存储的实例
过程。
CREATE QUEUE ExpenseQueue
WITH STATUS=ON,
ACTIVATION (
PROCEDURE_NAME = expense_procedure,
MAX_QUEUE_READERS = 5,
EXECUTE AS 'ExpenseUser' ) ;