GET CONVERSATION GROUP (Transact-SQL)

Platí na:SQL ServerAzureSQL Managed Instance

Vrátí identifikátor konverzační skupiny pro další přijatou zprávu a uzamkne konverzační skupinu pro konverzaci, která zprávu obsahuje. Identifikátor skupiny konverzace lze použít k získání informací o stavu konverzace před samotnou zprávou.

Transact-SQL konvence syntaxe

Syntax

[ WAITFOR ( ]  
   GET CONVERSATION GROUP @conversation_group_id  
      FROM <queue>  
[ ) ] [ , TIMEOUT timeout ]  
[ ; ]  
  
<queue> ::=  
{ database_name.schema_name.queue_name | schema_name.queue_name | queue_name }  

Arguments

WAITFOR
Specifikuje, že GET CONVERSATION GROUP příkaz čeká na příchod zprávy do fronty, pokud aktuálně nejsou přítomny žádné zprávy.

@conversation_group_id
Je proměnná používaná k uložení ID konverzační skupiny vrácené příkazem GET CONVERSATION GROUP . Proměnná musí být typu uniqueidentifier. Pokud nejsou k dispozici žádné konverzační skupiny, proměnná se nastaví na NULL.

FROM
Specifikuje frontu, ze které se má konverzační skupina vyzvednout.

database_name
Je název databáze, která obsahuje frontu pro získání konverzační skupiny. Když není poskytnut žádný database_name , výchozí nastavení je aktuální databáze.

schema_name
Je název schématu, které vlastní frontu pro získání konverzační skupiny. Když není poskytnut žádný schema_name , výchozí je pro aktuálního uživatele výchozí schéma.

queue_name
Je název fronty, odkud se získává konverzační skupina.

TIMEOUT
Specifikuje dobu, po kterou Service Broker čeká v milisekundách, než zpráva dorazí do fronty. Tato klauzule může být použita pouze s klauzulí WAITFOR. Pokud příkaz používající WAITFOR tuto klauzuli neobsahuje nebo je časový limit -1, doba čekání je neomezená. Pokud vyprší časový limit, GET CONVERSATION GROUP nastavte proměnnou @conversation_group_id na NULL.

Remarks

Important

Pokud GET CONVERSATION GROUP příkaz není prvním příkazem v dávkové nebo uložené procedurě, musí být předchozí příkaz ukončen středníkem (;), což je Transact-SQL příkazový terminál.

Pokud fronta specifikovaná ve příkazu GET CONVERSATION GROUP není dostupná, příkaz selže s chybou Transact-SQL.

Toto tvrzení vrací další konverzační skupinu, kde platí vše následující:

  • Konverzační skupinu lze úspěšně uzamknout.

  • Konverzační skupina má ve frontě k dispozici zprávy.

  • Konverzační skupina má nejvyšší prioritu ze všech konverzačních skupin, které splňují dříve uvedená kritéria. Úroveň priority konverzační skupiny je nejvyšší prioritní úroveň přiřazená jakékoli konverzaci, která je členem skupiny a má zprávy ve frontě.

Následující hovory do GET CONVERSATION GROUP jedné transakce mohou uzamknout více než jednu konverzační skupinu. Pokud není k dispozici žádná skupina konverzací, příkaz vrátí NULL jako identifikátor skupiny konverzací.

Když je specifikována klauzule WAITFOR, příkaz čeká na stanovený časový limit nebo dokud nebude k dispozici konverzační skupina. Pokud je fronta ukončena během čekání na příkaz, příkaz okamžitě vrátí chybu.

GET CONVERSATION GROUP není platná v uživatelsky definované funkci.

Permissions

Pro získání identifikátoru konverzační skupiny z fronty musí mít aktuální uživatel RECEIVE oprávnění k frontě.

Examples

A. Vytvoření konverzační skupiny, čekání na neurčito

Následující příklad nastavuje @conversation_group_id identifikátor konverzační skupiny pro další dostupnou zprávu na ExpenseQueue. Příkaz čeká, až bude zpráva dostupná.

DECLARE @conversation_group_id UNIQUEIDENTIFIER ;  
  
WAITFOR (  
 GET CONVERSATION GROUP @conversation_group_id  
     FROM ExpenseQueue  
) ;  

B. Sestavení konverzační skupiny, čekání minutu

Následující příklad nastavuje @conversation_group_id identifikátor konverzační skupiny pro další dostupnou zprávu na ExpenseQueue. Pokud do jedné minuty není žádná zpráva dostupná, GET CONVERSATION GROUP vrátí se bez změny hodnoty .@conversation_group_id

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

C. Založit konverzační skupinu, hned se vrátit

Následující příklad nastavuje @conversation_group_id identifikátor konverzační skupiny pro další dostupnou zprávu na ExpenseQueue. Pokud není k dispozici žádná zpráva, vrátí GET CONVERSATION GROUP se ihned bez změny @conversation_group_id.

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

Viz také

BEGIN DIALOG CONVERSATION (Transact-SQL)
MOVE CONVERSATION (Transact-SQL)