Condividi tramite


Code di elaborazione delle query

Si applica a:SQL ServerIstanza gestita di SQL di Azure

A volte potrebbe essere necessario esaminare il contenuto di una coda nel suo complesso. Potrebbe essere necessario conoscere il numero di messaggi contenuti nella coda oppure assicurarsi che l'applicazione abbia elaborato tutti i messaggi per un servizio che si sta per portare offline. Potrebbe essere necessario scoprire perché i messaggi non vengono elaborati da un'applicazione.

Per ottenere queste informazioni, utilizzare il nome della coda come tabella di origine di un'istruzione SELECT. Un'istruzione SELECT in una coda ha lo stesso formato di un'istruzione SELECT in una vista o in una tabella.

Nota

Service Broker è progettato per consentire a più agenti di lettura coda di ricevere in modo efficiente messaggi da una coda. Tuttavia, una dichiarazione SELECT in una coda potrebbe causare blocchi. Quando si usa un'istruzione SELECT in una coda, specificare l'hint NOLOCK per evitare di bloccare le applicazioni che usano la coda. Per una descrizione delle colonne in una coda, vedere CREATE QUEUE.

Di seguito è riportata un'istruzione di esempio SELECT per individuare il numero di messaggi nella coda ExpenseQueue:

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

L'istruzione seguente SELECT consente all'amministratore di sapere se la coda ExpenseQueue contiene messaggi per il servizio 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 gestisce gli aggiornamenti alle code. Anche se il nome di una coda può essere usato al posto di un nome di tabella in un'istruzione SELECT , una coda non può essere la destinazione di un'istruzione INSERT, UPDATE, DELETEo TRUNCATE . SQL Server non consente agli utenti di creare indici nelle code.