Udostępnij za pośrednictwem


Kwerenda kolejek

Czasami może być konieczne sprawdzenie zawartości kolejki jako całości.Chcesz wiedzieć, ile komunikatów zawiera kolejki lub może zajść potrzeba zapewnienia, że aplikacja ma przetwarzane wszystkie wiadomości dla usługa, które należy podjąć w trybie offline.Należy sprawdzić, dlaczego wiadomości nie są przetwarzane przez aplikację.

Aby uzyskać te informacje, należy użyć nazwy kolejki jako źródło tabela instrukcja SELECT.Instrukcja SELECT w kolejce ma ten sam format jak instrukcja SELECT w widoku lub tabela.

Ostrzeżenie

Service Broker jest umożliwienie wielu czytelników kolejki efektywnie odbierać wiadomości z kolejki.Instrukcja SELECT w kolejce może jednak powodować blokowanie.Korzystając z instrukcja SELECT w kolejce, określ wskazówkę NOLOCK i unikanie zablokowania aplikacji korzystających z kolejki.

Opis kolumny w kolejce, zobacz Tworzenie kolejki (Transact-SQL).

Oto przykład instrukcja SELECT, aby ustalić liczbę wiadomości w kolejce ExpenseQueue:

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

Następujących instrukcja SELECT umożliwia administratorowi dowiedzieć się, czy kolejka ExpenseQueue zawiera komunikaty usługa //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 zarządza aktualizacje do kolejek.Although the name of a queue can be used in place of a table name in a SELECT statement, a queue cannot be the target of an INSERT, UPDATE, DELETE, or TRUNCATE statement.SQL Server does not allow users to create indexes on queues.

Zobacz także

Odwołanie

Koncepcje