Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL ServerAzure
SQL 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.
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)