SQLDependency和WaitFor Receive

时间:2012-01-23 09:14:26

标签: c# sql-server ado.net

我正在开发一个项目,其中SqlDependencies附加到一个大表...

当激活这些依赖项时,我会在SSMS活动监视器中看到最近昂贵的查询中的这种请求:

WAITFOR(RECEIVE TOP (1) message_type_name, conversation_handle, cast(message_body AS XML) as message_body from [SqlQueryNotificationService-d1bd009f-3cb4-42af-85d8-38a4b15ca399]), TIMEOUT @p2;

平均持续时间接近60秒。

这是正常的吗?这是因为有一个工人线程?

感谢。

1 个答案:

答案 0 :(得分:3)

是的,这是正常的。 SqlDependency在内部使用SQL Server排队机制。

WAITFOR( RECEIVE ... )是用于等待Sql Server中队列上到达消息的SQL命令。