GET CONVERSATION GROUP (Transact-SQL)

Şunlar için geçerlidir: SQL Server Azure SQL Yönetilen Örneği

Bir sonraki mesaj için konuşma grubu tanımlayıcısını döndürür ve mesajı içeren konuşma için konuşma grubunu kilitler. Konuşma grubu tanımlayıcısı, mesajın kendisi alınmadan önce konuşma durumu bilgisini almak için kullanılabilir.

Transact-SQL söz dizimi kuralları

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
Şu anda hiç mesaj yoksa, ilanın GET CONVERSATION GROUP , kuyruk üzerinde bir mesaj gelmesini beklediğini belirtir.

@conversation_group_id
Döndürülen ifade tarafından döndürülen konuşma grubu kimliğini GET CONVERSATION GROUP depolamak için kullanılan bir değişkendir. Değişken benzersiz tanımlayıcı türünde olmalıdır. Eğer mevcut konuşma grupları yoksa, değişken NULL olarak ayarlanır.

FROM
Konuşma grubunun hangi kuyruğu alacağını belirtir.

database_name
Konuşma grubunu almak için kuyruğu içeren veritabanının adıdır. database_name sağlanmadığında, varsayılan olarak mevcut veritabanına geçer.

schema_name
Konuşma grubunu almak için kuyruğu alan şemanın adıdır. schema_name sağlanmadığında, mevcut kullanıcı için varsayılan şemaya geçer.

queue_name
Konuşma grubunu almak için kuyruğun adı bu.

MOLA VERME
Service Broker'ın kuyruğa bir mesaj gelmesini beklediği süreyi milisaniyeler cinsinden belirtir. Bu madde yalnızca WAITFOR maddesiyle birlikte kullanılabilir. WAITFOR kullanan bir ifade bu maddeyi içermiyorsa veya zaman aşımı -1 ise, bekleme süresi sınırsızdır. Zaman aşımı dönerse, GET CONVERSATION GROUP@conversation_group_id değişkeni NULL olarak ayar.

Remarks

Important

Eğer bu ifade GET CONVERSATION GROUP bir toplu veya depolanmış prosedürdeki ilk ifade değilse, önceki ime noktalı virgül (;) ile sonlandırılmalıdır; bu da Transact-SQL ifadeyi sonlandırıcıdır.

Eğer ifadede GET CONVERSATION GROUP belirtilen kuyruk kullanılamazsa, ibildirim Transact-SQL hatasıyla başarısız olur.

Bu ifade, aşağıdakilerin hepsinin doğru olduğu bir sonraki konuşma grubunu geri getirir:

  • Sohbet grubu başarılı bir şekilde kilitlenebilir.

  • Konuşma grubunun kuyruğunda mesajlar mevcuttur.

  • Konuşma grubu, daha önce belirtilen kriterleri karşılayan tüm konuşma grupları arasında en yüksek öncelik seviyesine sahiptir. Bir konuşma grubunun öncelik seviyesi, grup üyesi olan ve kuyrukta mesajları olan herhangi bir konuşmaya atanan en yüksek öncelik seviyesidir.

Aynı işlem içinde ardışık aramalar GET CONVERSATION GROUP birden fazla konuşma grubunu kilitleyebilir. Eğer herhangi bir konuşma grubu mevcut değilse, ifade NULL'u konuşma grubu tanımlayıcısı olarak döndürür.

WAITFOR maddesi belirtildiğinde, ifade belirtilen zaman aşımına veya bir sohbet grubu bulunana kadar bekler. Eğer ifade beklerken kuyruk düşürülürse, ifade hemen hata döndürür.

GET CONVERSATION GROUP kullanıcı tanımlı bir fonksiyonda geçerli değildir.

Permissions

Bir kuyruktan konuşma grubu tanımlayıcısı almak için mevcut kullanıcının kuyruk üzerinde iznine sahip RECEIVE olması gerekir.

Examples

A. Bir sohbet grubu kurmak, sonsuza kadar beklemek

Aşağıdaki örnek @conversation_group_id , bir sonraki mevcut mesaj için konuşma grubu tanımlayıcısını gösterir ExpenseQueue. Komut, bir mesaj kullanılabilir olana kadar bekler.

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

B. Bir sohbet grubu kurmak, bir dakika beklemek

Aşağıdaki örnek @conversation_group_id , bir sonraki mevcut mesaj için konuşma grubu tanımlayıcısını gösterir ExpenseQueue. Bir dakika içinde mesaj mevcut olmazsa, GET CONVERSATION GROUP değerini değiştirmeden @conversation_group_idgeri döner.

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

C. Bir sohbet grubu kurmak, hemen geri dönmek

Aşağıdaki örnek @conversation_group_id , bir sonraki mevcut mesaj için konuşma grubu tanımlayıcısını gösterir ExpenseQueue. Mesaj mevcut değilse, GET CONVERSATION GROUP hemen değişmeden @conversation_group_idgeri döner.

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

Ayrıca Bkz.

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