日期:2014-05-18  浏览次数:20465 次

Service Broker 队列激活存储过程
为什么我不能激活调用存储过程,我向队列里添加了信息,存储过程却不执行,我的存储过程批前几次没有读取队列消息,所以队列就认为这存储过程是失败的,就不激活这存储过程了。但我现在把存储过程改掉了,执行了读取队列操作,并进行数据添加操作。之后向队列添加信息,还是没能执行存储过程。

下面这代码难道有错
----------------------
ALTER   QUEUE   [SalesQueue]   WITH   ACTIVATION  
(
STATUS   =   ON,
MAX_QUEUE_READERS   =   5,
PROCEDURE_NAME   =   usp_RecordSaleMessage,
EXECUTE   AS   OWNER
);

我的存储usp_RecordSaleMessage:
BEGIN

DECLARE   @conversationHandle   uniqueidentifier
declare   @message_body   varchar(MAX)
declare   @message_type_name   sysname;

Begin   Transaction;
RECEIVE   top(1)   @message_type_name=message_type_name,   @conversationHandle=conversation_handle,     @message_body=message_body       FROM   [SalesQueue]
if   @message_type_name   = 'RecordSale '
Begin
print   @message_body
exec   (@message_body)  
End
Commit
end


------解决方案--------------------
Service Broker
http://www.windbi.com/showtopic-331.aspx

建立分布式Service Broker应用程序
http://www.windbi.com/showtopic-352.aspx