Udostępnij za pośrednictwem


Podczas badania kolejki

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

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

Uwaga

usługa Broker została zaprojektowana z myślą o umożliwieniu wielu czytelników kolejki wydajnie 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ę dotyczącą NOLOCK, aby uniknąć zablokowania aplikacji korzystających z kolejki.

Aby uzyskać opis kolumny z kolejki Zobacz CREATE QUEUE (języka Transact-SQL).

Poniżej przedstawiono przykład instrukcja SELECT, aby ustalić liczbę wiadomości w kolejce ExpenseQueue:

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

Poniższa instrukcja SELECT umożliwia administratorowi dowiedzieć się, czy kolejka ExpenseQueue zawiera wszystkie wiadomości dla 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' ;

usługa Broker zarządza aktualizacje do kolejki.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.