Bagikan melalui


CREATE SERVICE (Transact-SQL)

Berlaku untuk:SQL ServerAzure 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.

Konvensi sintaks transact-SQL

Sintaksis

CREATE SERVICE service_name  
   [ AUTHORIZATION owner_name ]  
   ON QUEUE [ schema_name. ]queue_name  
   [ ( contract_name | [DEFAULT][ ,...n ] ) ]  
[ ; ]  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

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)