使用 WAITFOR
WAITFOR 语句挂起批处理、存储过程或事务的执行,直到发生以下情况:
- 已超过指定的时间间隔。
- 到达一天中指定的时间。
- 指定的 RECEIVE 语句至少修改一行或并将其返回到 Service Broker 队列。
实际的时间延迟可能随着指定的时间而变化,并取决于服务器的活动级别。时间计数器在计划完与 WAITFOR 语句关联的线程后启动。如果服务器忙碌,则可能不会立即计划线程;因此,时间延迟可能比指定的时间要长。
WAITFOR 语句由下列子句之一指定:
DELAY 关键字后为 time_to_pass,是指完成 WAITFOR 语句之前等待的时间。完成 WAITFOR 语句之前等待的时间最多为 24 小时。
在下面的示例中,执行SELECT
语句之前使用DELAY
关键字等待两秒钟:WAITFOR DELAY '00:00:02' SELECT EmployeeID FROM AdventureWorks.HumanResources.Employee;
TIME 关键字后为 time_to_execute,指定 WAITFOR 语句完成所用的时间。
下面的示例使用TIME
关键字等到晚上 10 点 (22:00
) 才执行AdventureWorks
数据库检查,从而确保正确地分配并使用所有页:USE AdventureWorks; GO BEGIN WAITFOR TIME '22:00'; DBCC CHECKALLOC; END; GO
RECEIVE 语句子句,从 Service Broker 队列检索一条或多条消息。使用 RECEIVE 语句指定 WAITFOR 时,如果当前未显示任何消息,该语句将等待消息到达队列。
后面带有 timeout 的 TIMEOUT 关键字将指定 Service Broker 等待消息到达队列的时间(毫秒)。可以在 RECEIVE 语句或 GET CONVERSATION GROUP 语句中指定 TIMEOUT。
版本 | 历史记录 |
---|---|
2005 年 12 月 5 日 |
|
请参阅
其他资源
RECEIVE (Transact-SQL)
WAITFOR (Transact-SQL)
GET CONVERSATION GROUP (Transact-SQL)