WAITFOR 사용

WAITFOR 문은 일괄 처리, 저장 프로시저 또는 트랜잭션의 실행을 다음 시기까지 일시 중지합니다.

  • 지정한 시간 간격이 지날 때까지
  • 하루 중 지정한 시간에 도달할 때까지
  • 지정한 RECEIVE 문이 행을 적어도 하나 이상 수정하거나 Service Broker 큐에 반환할 때까지

실제 시간 지연은 지정된 시간과 다를 수 있으며 서버의 작업 수준에 따라 달라집니다. 시간 카운터는 WAITFOR 문과 연결된 스레드가 예약된 시간에 시작합니다. 서버가 사용 중이면 스레드가 즉시 예약되지 않을 수도 있으므로 시간 지연이 지정된 시간보다 길어질 수 있습니다.

WAITFOR 문은 다음 절 중 하나와 함께 지정됩니다.

  • WAITFOR 문을 완료하기 전에 time_to_pass 앞에 오는 DELAY 키워드. WAITFOR 문을 완료하기 전에 기다려야 하는 시간은 최대 24시간입니다.
    다음 예에서는 DELAY 키워드를 사용하여 SELECT 문을 수행하기 전에 2초 동안 기다립니다.

    WAITFOR DELAY '00:00:02'
    SELECT EmployeeID FROM AdventureWorks.HumanResources.Employee;
    
  • WAITFOR 문의 완료 시간을 지정하는 time_to_execute 앞에 오는 TIME 키워드
    다음 예에서는 TIME 키워드를 사용하여 오후 10시(22:00)까지 기다렸다가 AdventureWorks 데이터베이스를 검사하여 모든 페이지가 제대로 할당되고 사용되었는지 확인합니다.

    USE AdventureWorks;
    GO
    BEGIN
        WAITFOR TIME '22:00';
        DBCC CHECKALLOC;
    END;
    GO
    
  • Service Broker 큐에서 메시지를 하나 이상 검색하는 RECEIVE 문 절. 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)

도움말 및 정보

SQL Server 2005 지원 받기