GET CONVERSATION GROUP (Transact-SQL)

Berlaku untuk: SQL ServerAzure SQL Managed Instance

Mengembalikan pengidentifikasi grup percakapan untuk pesan berikutnya yang akan diterima, dan mengunci grup percakapan untuk percakapan yang berisi pesan. Pengidentifikasi grup percakapan dapat digunakan untuk mengambil informasi status percakapan sebelum mengambil pesan itu sendiri.

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

WAITFOR
Menentukan bahwa GET CONVERSATION GROUP pernyataan menunggu pesan tiba di antrean jika tidak ada pesan saat ini.

@conversation_group_id
Adalah variabel yang digunakan untuk menyimpan ID grup percakapan yang dikembalikan oleh GET CONVERSATION GROUP pernyataan. Variabel harus berjenis uniqueidentifier. Jika tidak ada grup percakapan yang tersedia, variabel diatur ke NULL.

DARI
Menentukan antrean untuk mendapatkan grup percakapan.

database_name
Adalah nama database yang berisi antrean untuk mendapatkan grup percakapan. Ketika tidak ada database_name yang disediakan, default ke database saat ini.

schema_name
Adalah nama skema yang memiliki antrean untuk mendapatkan grup percakapan. Ketika tidak ada schema_name yang disediakan, default ke skema default untuk pengguna saat ini.

queue_name
Adalah nama antrean untuk mendapatkan grup percakapan.

Batas waktu habis
Menentukan lamanya waktu, dalam milidetik, Bahwa Service Broker menunggu pesan tiba pada antrean. Klausa ini hanya dapat digunakan dengan klausa WAITFOR. Jika pernyataan yang menggunakan WAITFOR tidak menyertakan klausul ini atau batas waktunya adalah -1, waktu tunggu tidak terbatas. Jika batas waktu kedaluwarsa, GET CONVERSATION GROUP atur variabel @conversation_group_id ke NULL.

Keterangan

Penting

Jika GET CONVERSATION GROUP pernyataan bukan pernyataan pertama dalam batch atau prosedur tersimpan, pernyataan sebelumnya harus diakhiri dengan titik koma (;), terminator pernyataan Transact-SQL.

Jika antrean yang ditentukan dalam GET CONVERSATION GROUP pernyataan tidak tersedia, pernyataan gagal dengan kesalahan Transact-SQL.

Pernyataan ini mengembalikan grup percakapan berikutnya di mana semua hal berikut ini benar:

  • Grup percakapan dapat berhasil dikunci.

  • Grup percakapan memiliki pesan yang tersedia dalam antrean.

  • Grup percakapan memiliki tingkat prioritas tertinggi dari semua grup percakapan yang memenuhi kriteria yang tercantum sebelumnya. Tingkat prioritas grup percakapan adalah tingkat prioritas tertinggi yang ditetapkan ke percakapan apa pun yang merupakan anggota grup dan memiliki pesan dalam antrean.

Panggilan berturut-turut ke GET CONVERSATION GROUP dalam transaksi yang sama dapat mengunci lebih dari satu grup percakapan. Jika tidak ada grup percakapan yang tersedia, pernyataan mengembalikan NULL sebagai pengidentifikasi grup percakapan.

Saat klausul WAITFOR ditentukan, pernyataan menunggu batas waktu yang ditentukan, atau hingga grup percakapan tersedia. Jika antrean dihilangkan saat pernyataan sedang menunggu, pernyataan segera mengembalikan kesalahan.

GET CONVERSATION GROUP tidak valid dalam fungsi yang ditentukan pengguna.

Izin

Untuk mendapatkan ID grup percakapan dari antrean, pengguna saat ini harus memiliki RECEIVE izin pada antrean.

Contoh

J. Mendapatkan grup percakapan, menunggu tanpa batas waktu

Contoh berikut diatur @conversation_group_id ke pengidentifikasi grup percakapan untuk pesan berikutnya yang tersedia di ExpenseQueue. Perintah menunggu hingga pesan tersedia.

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

B. Mendapatkan grup percakapan, menunggu satu menit

Contoh berikut diatur @conversation_group_id ke pengidentifikasi grup percakapan untuk pesan berikutnya yang tersedia di ExpenseQueue. Jika tidak ada pesan yang tersedia dalam waktu satu menit, GET CONVERSATION GROUP akan kembali tanpa mengubah nilai @conversation_group_id.

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

C. Mendapatkan grup percakapan, segera kembali

Contoh berikut diatur @conversation_group_id ke pengidentifikasi grup percakapan untuk pesan berikutnya yang tersedia di ExpenseQueue. Jika tidak ada pesan yang tersedia, GET CONVERSATION GROUP segera kembali tanpa mengubah @conversation_group_id.

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