CREATE SERVICE (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Membuat layanan baru. Layanan Service Broker adalah nama untuk tugas atau serangkaian tugas tertentu. Service Broker menggunakan nama layanan untuk merutekan pesan, mengirimkan pesan ke antrean yang benar dalam database, dan memberlakukan kontrak untuk percakapan.
Sintaks
CREATE SERVICE service_name
[ AUTHORIZATION owner_name ]
ON QUEUE [ schema_name. ]queue_name
[ ( contract_name | [DEFAULT][ ,...n ] ) ]
[ ; ]
Argumen
service_name
Adalah nama layanan yang akan dibuat. Layanan baru dibuat dalam database saat ini dan dimiliki oleh prinsipal yang ditentukan dalam klausul OTORISASI. Nama server, database, dan skema tidak dapat ditentukan. service_name harus berupa nama sysname yang valid.
Catatan
Jangan membuat layanan yang menggunakan kata kunci ANY untuk service_name. Saat Anda menentukan ANY
nama layanan di CREATE BROKER PRIORITY
, prioritas dipertimbangkan untuk semua layanan. Ini tidak terbatas pada layanan yang namanya ANY.
owner_name OTORISASI
Mengatur pemilik layanan ke pengguna atau peran database yang ditentukan. Ketika pengguna saat ini adalah dbo atau sa, owner_name mungkin nama pengguna atau peran yang valid. Jika tidak, owner_name harus menjadi nama pengguna saat ini, nama pengguna tempat pengguna saat ini memiliki izin IMPERSONATE, atau nama peran tempat pengguna saat ini berada.
PADA ANTREAN [ schema_name. ] queue_name
Menentukan antrean yang menerima pesan untuk layanan. Antrean harus ada dalam database yang sama dengan layanan. Jika tidak ada schema_name yang disediakan, skema adalah skema default untuk pengguna yang menjalankan pernyataan.
contract_name
Menentukan kontrak yang mungkin menjadi target layanan ini. Program layanan memulai percakapan ke layanan ini menggunakan kontrak yang ditentukan. Jika tidak ada kontrak yang ditentukan, layanan hanya dapat memulai percakapan.
[DEFAULT]
Menentukan bahwa layanan mungkin menjadi target untuk percakapan yang mengikuti kontrak DEFAULT. Dalam konteks klausul ini, DEFAULT bukan kata kunci, dan harus dibatasi sebagai pengidentifikasi. Kontrak DEFAULT memungkinkan kedua sisi percakapan mengirim pesan jenis pesan DEFAULT. Jenis pesan DEFAULT menggunakan validasi NONE.
Keterangan
Layanan mengekspos fungsionalitas yang disediakan oleh kontrak yang terkait dengannya, sehingga dapat digunakan oleh layanan lain. Pernyataan CREATE SERVICE
menentukan kontrak yang menjadi target layanan ini. Layanan hanya dapat menjadi target untuk percakapan yang menggunakan kontrak yang ditentukan oleh layanan. Layanan yang menentukan tidak ada kontrak yang tidak mengekspos fungsionalitas ke layanan lain.
Percakapan yang dimulai dari layanan ini dapat menggunakan kontrak apa pun. Anda membuat layanan tanpa menentukan kontrak saat layanan hanya memulai percakapan.
Ketika Service Broker menerima percakapan baru dari layanan jarak jauh, nama layanan target menentukan antrean tempat broker menempatkan pesan dalam percakapan.
Izin
Izin untuk membuat layanan secara default kepada anggota db_ddladmin
peran database tetap atau db_owner
, atau sysadmin
peran server tetap. Pengguna yang CREATE SERVICE
menjalankan pernyataan harus memiliki REFERENCES
izin pada antrean dan semua kontrak yang ditentukan.
REFERENCES
izin untuk layanan default kepada pemilik layanan, anggota db_ddladmin
peran database tetap, atau db_owner
anggota sysadmin
peran server tetap. SEND
izin untuk layanan default kepada pemilik layanan, anggota db_owner
peran database tetap, atau anggota sysadmin
peran server tetap.
Layanan mungkin bukan objek sementara. Nama layanan yang dimulai dengan # diizinkan, tetapi merupakan objek permanen.
Contoh
J. Membuat layanan dengan satu kontrak
Contoh berikut membuat layanan //Adventure-Works.com/Expenses
pada ExpenseQueue
antrean dalam dbo
skema. Dialog yang menargetkan layanan ini harus mengikuti kontrak //Adventure-Works.com/Expenses/ExpenseSubmission
.
CREATE SERVICE [//Adventure-Works.com/Expenses]
ON QUEUE [dbo].[ExpenseQueue]
([//Adventure-Works.com/Expenses/ExpenseSubmission]) ;
B. Membuat layanan dengan beberapa kontrak
Contoh berikut membuat layanan //Adventure-Works.com/Expenses
pada ExpenseQueue
antrean. Dialog yang menargetkan layanan ini harus mengikuti kontrak //Adventure-Works.com/Expenses/ExpenseSubmission
atau kontrak //Adventure-Works.com/Expenses/ExpenseProcessing
.
CREATE SERVICE [//Adventure-Works.com/Expenses] ON QUEUE ExpenseQueue
([//Adventure-Works.com/Expenses/ExpenseSubmission],
[//Adventure-Works.com/Expenses/ExpenseProcessing]) ;
C. Membuat layanan tanpa kontrak
Contoh berikut membuat antrean layanan //Adventure-Works.com/Expenses on the ExpenseQueue
. Layanan ini tidak memiliki informasi kontrak. Oleh karena itu, layanan hanya dapat menjadi inisiator dialog.
CREATE SERVICE [//Adventure-Works.com/Expenses] ON QUEUE ExpenseQueue ;
Lihat Juga
ALTER SERVICE (Transact-SQL)
DROP SERVICE (Transact-SQL)
EVENTDATA (Transact-SQL)