Sql-Server
為什麼 WAITFOR (RECEIVE FROM QUEUE) 在監視器中顯示不正確?
我在我的應用程序中啟動了以下命令:
WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue)
當我執行“sp_who2 active”時,我得到 Status=SUSPENDED 和 Command=DELETE
注意:從 StackOverflow 移出。
因為是一個DELETE。RECEIVe 只是類似的語法糖
DELETE from queue OUTPUT DELETED.* WHERE status = <receivable>;
如果啟用保留,則為 UPDATE,並將顯示為 UPDATE。有一些細節,比如會話組鎖定是如何完成的,如何確保正確的消息 ExactlyOnceInOrder 語義以及 RECEIVE 的語法樹並不是真正可以在 T-SQL 中建構的。正如我所說,細節…
我在Using Tables as Queues中推薦使用 DELETE 的 OUTPUT 子句從表中“出列”,這絕非巧合……