Esecuzione di query sulle code
In alcuni casi può essere necessario controllare il contenuto di una coda nel suo complesso, ad esempio per conoscere il numero dei messaggi presenti o verificare che l'applicazione abbia elaborato tutti i messaggi per un servizio che non si desidera mantenere in linea. Può inoltre essere necessario individuare i motivi che impediscono l'elaborazione di messaggi da parte di un'applicazione.
Per ottenere queste informazioni, utilizzare il nome della coda come tabella di origine di un'istruzione SELECT. Il formato di un'istruzione SELECT per una coda è lo stesso utilizzato per una vista o una tabella.
[!NOTA] Per ricevere in modo efficiente i messaggi da una coda, Service Broker è progettato per il supporto di diversi lettori di coda. Tuttavia, un'istruzione SELECT per una coda può causare una condizione di blocco. Per evitare il blocco delle applicazioni che utilizzano la coda, specificare l'hint NOLOCK nell'istruzione SELECT.
Per una descrizione delle colonne di una coda, vedere CREATE QUEUE (Transact-SQL).
Di seguito è riportato un esempio di istruzione SELECT che consente di individuare il numero di messaggi presenti nella coda ExpenseQueue:
SELECT COUNT(*) FROM dbo.ExpenseQueue WITH (NOLOCK) ;
L'istruzione SELECT seguente 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 automaticamente gli aggiornamenti delle code. In un'istruzione SELECT, il nome di una coda può essere utilizzato al posto di un nome di tabella ma non è possibile utilizzare una coda come destinazione di un'istruzione INSERT, UPDATE, DELETE o TRUNCATE. SQL Server non consente la creazione di indici delle code.
Vedere anche
Concetti
Altre risorse
SELECT (Transact-SQL)
Message Retention