我正在开发一个项目,其中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秒。
这是正常的吗?这是因为有一个工人线程?
感谢。
答案 0 :(得分:3)
是的,这是正常的。 SqlDependency在内部使用SQL Server排队机制。
WAITFOR( RECEIVE ... )
是用于等待Sql Server中队列上到达消息的SQL命令。