다음을 통해 공유


큐 쿼리

때로는 쿼리 내용을 전체적으로 검사해야 할 경우가 있습니다. 큐에 포함되는 메시지 수를 알아야 할 수도 있고 오프라인으로 만들려는 서비스에 대한 모든 메시지를 응용 프로그램이 처리했는지 확인해야 할 수도 있습니다. 응용 프로그램이 메시지를 처리하지 않는 이유를 알아야 할 경우도 있습니다.

이 정보를 가져오려면 큐 이름을 SELECT 문의 원본 테이블로 사용합니다. 큐에 대한 SELECT 문은 뷰나 테이블에 대한 SELECT 문과 형식이 동일합니다.

[!참고] Service Broker는 여러 큐 판독기가 큐에서 메시지를 효율적으로 받을 수 있도록 설계되었습니다. 그러나 큐에 대한 SELECT 문을 사용하면 차단될 수 있습니다. 큐에 대한 SELECT 문을 사용할 때는 NOLOCK 힌트를 지정하여 큐를 사용하는 응용 프로그램 차단을 방지합니다.

큐의 열에 대한 설명은 CREATE QUEUE(Transact-SQL)를 참조하십시오.

다음은 ExpenseQueue 큐의 메시지 수를 확인하는 SELECT 문에 대한 예입니다.

SELECT COUNT(*) FROM dbo.ExpenseQueue WITH (NOLOCK) ;

다음 SELECT 문에서는 관리자가 ExpenseQueue 큐에 //Adventure-Works.com/AccountsPayable/Expenses 서비스에 대한 메시지가 있는지 여부를 알 수 있습니다.

IF EXISTS(SELECT * FROM dbo.ExpenseQueue WITH (NOLOCK) WHERE
          service_name = '//Adventure-Works.com/AccountsPayable/Expenses')
  PRINT 'The queue contains messages for ' +
        '//Adventure-Works.com/AccountsPayable/Expenses'
ELSE
  PRINT 'The queue does not contain messages for ' +
        '//Adventure-Works.com/AccountsPayable/Expenses' ;

Service Broker는 큐에 대한 업데이트를 관리합니다. SELECT 문에 테이블 이름 대신 큐 이름을 사용할 수는 있지만 큐가 INSERT, UPDATE, DELETE 또는 TRUNCATE 문의 대상이 될 수는 없습니다. SQL Server에서는 사용자가 큐에 대한 인덱스를 만들 수 없습니다.

참고 항목

개념

관련 자료

SELECT(Transact-SQL)
Message Retention

도움말 및 정보

SQL Server 2005 지원 받기