Ang*_*ker 5 sql-server-2005 sql-server service-broker
我在我的应用程序中启动以下命令:
WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue)
Run Code Online (Sandbox Code Playgroud)
当我运行 `sp_who2 active' 时,我得到 Status=SUSPENDED 和 Command=DELETE

注意:移自 StackOverflow。
Rem*_*anu 10
因为是 DELETE。RECEIVe 只是类似的语法糖
DELETE from queue
OUTPUT DELETED.*
WHERE status = <receivable>;
Run Code Online (Sandbox Code Playgroud)
如果启用保留,则为 UPDATE,并将显示为 UPDATE。有一些细节,比如会话组锁定是如何完成的,如何确保正确的消息 ExactlyOnceInOrder 语义,以及 RECEIVE 的语法树实际上不可能在 T-SQL 中构建。正如我所说,细节...
我在使用表作为队列中建议使用DELETE 的 OUTPUT 子句从表中“出列”,这绝非巧合...