BUAT PRIORITAS BROKER (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Menentukan tingkat prioritas dan serangkaian kriteria untuk menentukan percakapan Service Broker mana yang akan ditetapkan tingkat prioritasnya. Tingkat prioritas ditetapkan ke titik akhir percakapan apa pun yang menggunakan kombinasi kontrak dan layanan yang sama yang ditentukan dalam prioritas percakapan. Prioritas berkisar dalam nilai dari 1 (rendah) hingga 10 (tinggi). Bawaan adalah 5.
Sintaks
CREATE BROKER PRIORITY ConversationPriorityName
FOR CONVERSATION
[ SET ( [ CONTRACT_NAME = {ContractName | ANY } ]
[ [ , ] LOCAL_SERVICE_NAME = {LocalServiceName | ANY } ]
[ [ , ] REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY } ]
[ [ , ] PRIORITY_LEVEL = {PriorityValue | DEFAULT } ]
)
]
[;]
Argumen
ConversationPriorityName
Menentukan nama untuk prioritas percakapan ini. Nama harus unik dalam database saat ini, dan harus sesuai dengan aturan untuk pengidentifikasi Mesin Database.
SET
Menentukan kriteria untuk menentukan apakah prioritas percakapan berlaku untuk percakapan. Jika ditentukan, SET harus berisi setidaknya satu kriteria: CONTRACT_NAME, LOCAL_SERVICE_NAME, REMOTE_SERVICE_NAME, atau PRIORITY_LEVEL. Jika SET tidak ditentukan, default diatur untuk ketiga kriteria.
CONTRACT_NAME = {ContractName | ANY}
Menentukan nama kontrak yang akan digunakan sebagai kriteria untuk menentukan apakah prioritas percakapan berlaku untuk percakapan. ContractName adalah pengidentifikasi Mesin Database, dan harus menentukan nama kontrak dalam database saat ini.
ContractName
Menentukan bahwa prioritas percakapan hanya dapat diterapkan ke percakapan di mana pernyataan BEGIN DIALOG yang memulai percakapan yang ditentukan PADA CONTRACT ContractName.
ANY
Menentukan bahwa prioritas percakapan dapat diterapkan ke percakapan apa pun, terlepas dari kontrak mana yang digunakannya.
Defaultnya adalah ANY.
LOCAL_SERVICE_NAME = {LocalServiceName | ANY}
Menentukan nama layanan yang akan digunakan sebagai kriteria untuk menentukan apakah prioritas percakapan berlaku untuk titik akhir percakapan.
LocalServiceName adalah pengidentifikasi Mesin Database. Ini harus menentukan nama layanan dalam database saat ini.
LocalServiceName
Menentukan bahwa prioritas percakapan dapat diterapkan ke hal berikut:
Setiap titik akhir percakapan inisiator yang nama layanan inisiatornya cocok dengan LocalServiceName.
Setiap titik akhir percakapan target yang nama layanan targetnya cocok dengan LocalServiceName.
ANY
- Menentukan bahwa prioritas percakapan dapat diterapkan ke titik akhir percakapan apa pun, terlepas dari nama layanan lokal yang digunakan oleh titik akhir.
Defaultnya adalah ANY.
REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY}
Menentukan nama layanan yang akan digunakan sebagai kriteria untuk menentukan apakah prioritas percakapan berlaku untuk titik akhir percakapan.
RemoteServiceName adalah literal jenis nvarchar(256). Service Broker menggunakan perbandingan byte-byte untuk mencocokkan string RemoteServiceName . Perbandingan peka huruf besar/kecil dan tidak mempertimbangkan kolate saat ini. Layanan target dapat berada dalam instans Mesin Database saat ini, atau instans jarak jauh Mesin Database.
'RemoteServiceName'
Menentukan bahwa prioritas percakapan dapat diterapkan ke hal berikut:
Setiap titik akhir percakapan inisiator yang nama layanan target terkaitnya cocok dengan RemoteServiceName.
Setiap titik akhir percakapan target yang nama layanan inisiator terkaitnya cocok dengan RemoteServiceName.
ANY
Menentukan bahwa prioritas percakapan dapat diterapkan ke titik akhir percakapan apa pun, terlepas dari nama layanan jarak jauh yang terkait dengan titik akhir.
Defaultnya adalah ANY.
PRIORITY_LEVEL = { PriorityValue | DEFAULT }
Menentukan prioritas untuk menetapkan titik akhir percakapan apa pun yang menggunakan kontrak dan layanan yang ditentukan dalam prioritas percakapan. PriorityValue harus berupa bilangan bulat harfiah dari 1 (prioritas terendah) hingga 10 (prioritas tertinggi). Bawaan adalah 5.
Keterangan
Service Broker menetapkan tingkat prioritas ke titik akhir percakapan. Tingkat prioritas mengontrol prioritas operasi yang terkait dengan titik akhir. Setiap percakapan memiliki dua titik akhir percakapan:
Titik akhir percakapan inisiator mengaitkan satu sisi percakapan dengan layanan inisiator dan antrean inisiator. Titik akhir percakapan inisiator dibuat saat pernyataan BEGIN DIALOG dijalankan. Operasi yang terkait dengan titik akhir percakapan inisiator meliputi:
Mengirim dari layanan inisiator.
Menerima dari antrean inisiator.
Mendapatkan grup percakapan berikutnya dari antrean inisiator.
Titik akhir percakapan target mengaitkan sisi lain percakapan dengan layanan dan antrean target. Titik akhir percakapan target dibuat saat percakapan digunakan untuk mengirim pesan ke antrean target. Operasi yang terkait dengan titik akhir percakapan target meliputi:
Menerima dari antrean target.
Mengirim dari layanan target.
Mendapatkan grup percakapan berikutnya dari antrean target.
Service Broker menetapkan tingkat prioritas percakapan saat titik akhir percakapan dibuat. Titik akhir percakapan mempertahankan tingkat prioritas hingga percakapan berakhir. Prioritas atau perubahan baru pada prioritas yang ada tidak diterapkan ke percakapan yang sudah ada.
Service Broker menetapkan titik akhir percakapan tingkat prioritas dari prioritas percakapan yang kriteria kontrak dan layanannya paling cocok dengan properti titik akhir. Tabel berikut ini memperlihatkan prioritas kecocokan:
Kontrak operasi | Operasi layanan lokal | Operasi layanan jarak jauh |
---|---|---|
ContractName | LocalServiceName | RemoteServiceName |
ContractName | LocalServiceName | ANY |
ContractName | ANY | RemoteServiceName |
ContractName | ANY | ANY |
ANY | LocalServiceName | RemoteServiceName |
ANY | LocalServiceName | ANY |
ANY | ANY | RemoteServiceName |
ANY | ANY | ANY |
Service Broker terlebih dahulu mencari prioritas yang kontrak, layanan lokal, dan layanan jarak jauh yang ditentukan cocok dengan yang digunakan operasi. Jika tidak ditemukan, Service Broker mencari prioritas dengan kontrak dan layanan lokal yang cocok dengan yang digunakan operasi, dan di mana layanan jarak jauh ditentukan sebagai ANY. Ini berlanjut untuk semua variasi yang tercantum dalam tabel prioritas. Jika tidak ada kecocokan yang ditemukan, operasi diberi prioritas default 5.
Service Broker secara independen menetapkan tingkat prioritas untuk setiap titik akhir percakapan. Agar Service Broker menetapkan tingkat prioritas ke titik akhir percakapan inisiator dan target, Anda harus memastikan bahwa kedua titik akhir dicakup oleh prioritas percakapan. Jika inisiator dan titik akhir percakapan target berada dalam database terpisah, Anda harus membuat prioritas percakapan di setiap database. Tingkat prioritas yang sama biasanya ditentukan untuk kedua titik akhir percakapan untuk percakapan, tetapi Anda dapat menentukan tingkat prioritas yang berbeda.
Tingkat prioritas selalu diterapkan ke operasi yang menerima pesan atau pengidentifikasi grup percakapan dari antrean. Tingkat prioritas juga diterapkan saat mengirimkan pesan dari satu instans Mesin Database ke instans lain.
Tingkat prioritas tidak digunakan saat mengirimkan pesan:
Dari database tempat opsi database HONOR_BROKER_PRIORITY diatur ke NONAKTIF. Untuk informasi selengkapnya, lihat MENGUBAH Opsi SET DATABASE (Transact-SQL).
Antara layanan dalam instans mesin database yang sama.
Semua operasi Service Broker dalam database diberi prioritas default 5 jika tidak ada prioritas percakapan yang dibuat dalam database.
Izin
Izin untuk membuat prioritas percakapan default kepada anggota peran database tetap db_ddladmin atau db_owner, dan peran server tetap sysadmin. Memerlukan izin UBAH pada database.
Contoh
J. Menetapkan tingkat prioritas ke kedua arah percakapan.
Kedua prioritas percakapan ini memastikan bahwa semua operasi yang menggunakan SimpleContract
antara TargetService
dan InitiatorAService
yang ditetapkan prioritas tingkat 3.
CREATE BROKER PRIORITY InitiatorAToTargetPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = InitiatorServiceA,
REMOTE_SERVICE_NAME = N'TargetService',
PRIORITY_LEVEL = 3);
CREATE BROKER PRIORITY TargetToInitiatorAPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = TargetService,
REMOTE_SERVICE_NAME = N'InitiatorServiceA',
PRIORITY_LEVEL = 3);
B. Mengatur tingkat prioritas untuk semua percakapan yang menggunakan kontrak
Menetapkan tingkat 7
prioritas untuk semua operasi yang menggunakan kontrak bernama SimpleContract
. Ini mengasumsikan bahwa tidak ada prioritas lain yang menentukan dan SimpleContract
baik layanan lokal atau jarak jauh.
CREATE BROKER PRIORITY SimpleContractDefaultPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 7);
C. Mengatur tingkat prioritas dasar untuk database.
Menentukan prioritas percakapan untuk dua layanan tertentu, lalu menentukan prioritas percakapan yang akan cocok dengan semua titik akhir percakapan lainnya. Ini tidak menggantikan prioritas default, yang selalu 5, tetapi meminimalkan jumlah item yang ditetapkan default.
CREATE BROKER PRIORITY [//Adventure-Works.com/Expenses/ClaimPriority]
FOR CONVERSATION
SET (CONTRACT_NAME = ANY,
LOCAL_SERVICE_NAME = //Adventure-Works.com/Expenses/ClaimService,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 9);
CREATE BROKER PRIORITY [//Adventure-Works.com/Expenses/ApprovalPriority]
FOR CONVERSATION
SET (CONTRACT_NAME = ANY,
LOCAL_SERVICE_NAME = //Adventure-Works.com/Expenses/ClaimService,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY [//Adventure-Works.com/Expenses/BasePriority]
FOR CONVERSATION
SET (CONTRACT_NAME = ANY,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 3);
D. Membuat tiga tingkat prioritas untuk layanan target dengan menggunakan layanan
Mendukung sistem yang menyediakan tiga tingkat performa: Emas (tinggi), Perak (sedang), dan Perunggu (rendah). Ada satu kontrak, tetapi setiap tingkat memiliki layanan inisiator terpisah. Semua layanan inisiator berkomunikasi dengan layanan target pusat.
CREATE BROKER PRIORITY GoldInitToTargetPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = GoldInitiatorService,
REMOTE_SERVICE_NAME = N'TargetService',
PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY GoldTargetToInitPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = TargetService,
REMOTE_SERVICE_NAME = N'GoldInitiatorService',
PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY SilverInitToTargetPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = SilverInitiatorService,
REMOTE_SERVICE_NAME = N'TargetService',
PRIORITY_LEVEL = 4);
CREATE BROKER PRIORITY SilverTargetToInitPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = TargetService,
REMOTE_SERVICE_NAME = N'SilverInitiatorService',
PRIORITY_LEVEL = 4);
CREATE BROKER PRIORITY BronzeInitToTargetPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = BronzeInitiatorService,
REMOTE_SERVICE_NAME = N'TargetService',
PRIORITY_LEVEL = 2);
CREATE BROKER PRIORITY BronzeTargetToInitPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = TargetService,
REMOTE_SERVICE_NAME = N'BronzeInitiatorService',
PRIORITY_LEVEL = 2);
E. Membuat tiga tingkat prioritas untuk beberapa layanan menggunakan kontrak
Mendukung sistem yang menyediakan tiga tingkat performa: Emas (tinggi), Perak (sedang), dan Perunggu (rendah). Setiap tingkat memiliki kontrak terpisah. Prioritas ini berlaku untuk layanan apa pun yang dirujuk oleh percakapan yang menggunakan kontrak.
CREATE BROKER PRIORITY GoldPriority
FOR CONVERSATION
SET (CONTRACT_NAME = GoldContract,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY SilverPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SilverContract,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 4);
CREATE BROKER PRIORITY BronzePriority
FOR CONVERSATION
SET (CONTRACT_NAME = BronzeContract,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 2);
Lihat Juga
ALTER BROKER PRIORITY (Transact-SQL)
MULAI PERCAKAPAN DIALOG (Transact-SQL)
BUAT KONTRAK (T-SQL)
BUAT ANTREAN (Transact-SQL)
CREATE SERVICE (Transact-SQL)
DROP BROKER PRIORITY (Transact-SQL)
DAPATKAN GRUP PERCAKAPAN (Transact-SQL)
RECEIVE (Transact-SQL)
SEND (Transact-SQL)
sys.conversation_priorities (T-SQL)