Esporta (0) Stampa
Espandi tutto
Espandi Riduci a icona

GET CONVERSATION GROUP (Transact-SQL)

Restituisce l'identificatore del gruppo di conversazioni per il messaggio successivo da ricevere e blocca il gruppo di conversazioni per la conversazione contenente il messaggio. L'identificatore del gruppo di conversazioni può essere utilizzato per recuperare le informazioni sullo stato della conversazione prima di recuperare il messaggio stesso.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL


[ WAITFOR ( ]
   GET CONVERSATION GROUP @conversation_group_id
      FROM <queue>
[ ) ] [ , TIMEOUT timeout ]
[ ; ]


<queue> ::=
{
    [ database_name . [ schema_name ] . | schema_name . ] queue_name
}

WAITFOR

Specifica che l'istruzione GET CONVERSATION GROUP deve rimanere in attesa dell'arrivo di un messaggio nella coda, se non sono presenti messaggi.

@conversation_group_id

Variabile utilizzata per archiviare l'ID del gruppo di conversazioni restituito dall'istruzione GET CONVERSATION GROUP. La variabile deve essere di tipo uniqueidentifier. Se non sono disponibili gruppi di conversazione, la variabile viene impostata su NULL.

FROM

Specifica la coda da cui recuperare il gruppo di conversazioni.

database_name

Nome del database contenente la coda da cui recuperare il gruppo di messaggi. Se non viene specificato un valore per database_name, viene utilizzato per impostazione predefinita il database corrente.

schema_name

Nome dello schema proprietario della coda da cui recuperare il gruppo di messaggi. Se non viene specificato un valore per schema_name, viene utilizzato per impostazione predefinita lo schema predefinito dell'utente corrente.

queue_name

Nome della coda da cui recuperare il gruppo di conversazioni.

TIMEOUT timeout

Specifica la quantità di tempo, in millisecondi, che Service Broker attende l'arrivo di un messaggio nella coda. È possibile utilizzare questa clausola solo insieme alla clausola WAITFOR. Se un'istruzione che utilizza l'istruzione WAITFOR non include questa clausola oppure se timeout è -1, il tempo di attesa è illimitato. Se il timeout scade, l'istruzione GET CONVERSATION GROUP imposta la variabile @conversation_group_id su NULL.

Nota importante Importante

Se l'istruzione GET CONVERSATION GROUP non è la prima istruzione in un batch o in una stored procedure, l'istruzione precedente deve terminare con un punto e virgola (;), ovvero il terminatore di istruzioni Transact-SQL.

Se la coda specificata nell'istruzione GET CONVERSATION GROUP non è disponibile, l'istruzione viene interrotta con un errore Transact-SQL.

Questa istruzione restituisce il gruppo di conversazioni successivo in cui tutte le condizioni seguenti sono vere:

  • Il gruppo di conversazioni può essere correttamente bloccato.

  • Nella coda del gruppo di conversazioni sono disponibili messaggi.

  • Il gruppo di conversazioni ha il livello di priorità più elevato di tutti i gruppi di conversazioni che soddisfano i criteri elencati in precedenza. Il livello di priorità di un gruppo di conversazioni corrisponde a quello più elevato assegnato a qualsiasi conversazione membro del gruppo e per cui sono presenti messaggi nella coda.

Le chiamate all'istruzione GET CONVERSATION GROUP all'interno della stessa transazione potrebbero bloccare più di un gruppo di conversazioni. Se non è disponibile alcun gruppo di conversazioni, l'istruzione restituisce NULL come identificatore del gruppo di conversazioni.

Se si specifica la clausola WAITFOR, l'istruzione rimane in attesa per il periodo di timeout specificato oppure fino a quando non è disponibile un gruppo di conversazioni. Se la coda viene eliminata durante l'attesa dell'istruzione, viene restituito un errore.

GET CONVERSATION GROUP non è valida in una funzione definita dall'utente.

Per recuperare un identificatore di un gruppo di conversazioni da una coda, l'utente corrente deve disporre dell'autorizzazione RECEIVE per la coda.

A. Recupero di un gruppo di conversazioni e attesa illimitata

Nell'esempio seguente @conversation_group_id viene impostato sull'identificatore del gruppo di conversazioni per il successivo messaggio disponibile in ExpenseQueue. Il comando rimane in attesa finché non è disponibile un messaggio.

DECLARE @conversation_group_id UNIQUEIDENTIFIER ;

WAITFOR (
 GET CONVERSATION GROUP @conversation_group_id
     FROM ExpenseQueue
) ;

B. Recupero di un gruppo di conversazioni e attesa di un minuto

Nell'esempio seguente @conversation_group_id viene impostato sull'identificatore del gruppo di conversazioni per il successivo messaggio disponibile in ExpenseQueue. Se nessun messaggio diventa disponibile entro un minuto, GET CONVERSATION GROUP restituisce il valore di @conversation_group_id senza modificarlo.

DECLARE @conversation_group_id UNIQUEIDENTIFIER

WAITFOR (
    GET CONVERSATION GROUP @conversation_group_id 
    FROM ExpenseQueue ),
TIMEOUT 60000 ;

C. Recupero di un gruppo di conversazioni e restituzione immediata del valore

Nell'esempio seguente @conversation_group_id viene impostato sull'identificatore del gruppo di conversazioni per il successivo messaggio disponibile in ExpenseQueue. Se non è disponibile alcun messaggio, GET CONVERSATION GROUP restituisce immediatamente il valore di @conversation_group_id senza modificarlo.

DECLARE @conversation_group_id UNIQUEIDENTIFIER ;

GET CONVERSATION GROUP @conversation_group_id
FROM AdventureWorks.dbo.ExpenseQueue ;

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft