Bagikan melalui


ALTER ROUTE (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Memodifikasi informasi rute untuk rute yang ada di SQL Server.

Konvensi sintaks transact-SQL

Sintaksis

ALTER ROUTE route_name  
WITH    
  [ SERVICE_NAME = 'service_name' [ , ] ]  
  [ BROKER_INSTANCE = 'broker_instance' [ , ] ]  
  [ LIFETIME = route_lifetime [ , ] ]  
  [ ADDRESS =  'next_hop_address' [ , ] ]  
  [ MIRROR_ADDRESS = 'next_hop_mirror_address' ]  
[ ; ]  
  

Catatan

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

Argumen

route_name
Adalah nama rute yang akan diubah. Nama server, database, dan skema tidak dapat ditentukan.

WITH
Memperkenalkan klausul yang menentukan rute yang diubah.

SERVICE_NAME ='service_name'
Menentukan nama layanan jarak jauh yang dituju rute ini. service_name harus sama persis dengan nama yang digunakan layanan jarak jauh. Service Broker menggunakan perbandingan byte-byte untuk mencocokkan service_name. Dengan kata lain, perbandingannya peka huruf besar/kecil dan tidak mempertimbangkan kolate saat ini. Rute dengan nama layanan 'SQL/ServiceBroker/BrokerConfiguration' adalah rute ke layanan Pemberitahuan Konfigurasi Broker. Rute ke layanan ini mungkin tidak menentukan instans broker.

Jika klausul SERVICE_NAME dihilangkan, nama layanan untuk rute tidak berubah.

BROKER_INSTANCE ='broker_instance'
Menentukan database yang menghosting layanan target. Parameter broker_instance harus menjadi pengidentifikasi instans broker untuk database jarak jauh, yang dapat diperoleh dengan menjalankan kueri berikut dalam database yang dipilih:

SELECT service_broker_guid  
FROM sys.databases  
WHERE database_id = DB_ID();  

Ketika klausul BROKER_INSTANCE dihilangkan, instans broker untuk rute tidak berubah.

Catatan

Opsi ini tidak tersedia dalam database mandiri.

route_lifetime SEUMUR =HIDUP
Menentukan waktu, dalam detik, bahwa SQL Server mempertahankan rute dalam tabel perutean. Pada akhir masa pakai, rute kedaluwarsa, dan SQL Server tidak lagi mempertimbangkan rute saat memilih rute untuk percakapan baru. Jika klausa ini dihilangkan, masa pakai rute tidak berubah.

ADDRESS ='next_hop_address'

Untuk Azure SQL Managed Instance, ADDRESS harus lokal.

Menentukan alamat jaringan untuk rute ini. next_hop_address menentukan alamat TCP/IP dalam format berikut:

TCP:// { dns_name | netbios_name ip_address | } :port_number

port_number yang ditentukan harus cocok dengan nomor port untuk titik akhir Service Broker instans SQL Server di komputer yang ditentukan. Ini bisa diperoleh dengan menjalankan kueri berikut dalam database yang dipilih:

SELECT tcpe.port  
FROM sys.tcp_endpoints AS tcpe  
INNER JOIN sys.service_broker_endpoints AS ssbe  
   ON ssbe.endpoint_id = tcpe.endpoint_id  
WHERE ssbe.name = N'MyServiceBrokerEndpoint';  

Ketika rute menentukan 'LOCAL' untuk next_hop_address, pesan dikirimkan ke layanan dalam instans SQL Server saat ini.

Ketika rute menentukan 'TRANSPORT' untuk next_hop_address, alamat jaringan ditentukan berdasarkan alamat jaringan atas nama layanan. Rute yang menentukan 'TRANSPORT' dapat menentukan nama layanan atau instans broker.

Ketika next_hop_address adalah server utama untuk cermin database, Anda juga harus menentukan MIRROR_ADDRESS untuk server cermin. Jika tidak, rute ini tidak secara otomatis melakukan failover ke server cermin.

Catatan

Opsi ini tidak tersedia dalam database mandiri.

MIRROR_ADDRESS ='next_hop_mirror_address'
Menentukan alamat jaringan untuk server cermin dari pasangan cermin yang server utamanya berada di next_hop_address. next_hop_mirror_address menentukan alamat TCP/IP dalam format berikut:

TCP://{ dns_name | netbios_name ip_address | } :port_number

port_number yang ditentukan harus cocok dengan nomor port untuk titik akhir Service Broker instans SQL Server di komputer yang ditentukan. Ini bisa diperoleh dengan menjalankan kueri berikut dalam database yang dipilih:

SELECT tcpe.port  
FROM sys.tcp_endpoints AS tcpe  
INNER JOIN sys.service_broker_endpoints AS ssbe  
   ON ssbe.endpoint_id = tcpe.endpoint_id  
WHERE ssbe.name = N'MyServiceBrokerEndpoint';  

Saat MIRROR_ADDRESS ditentukan, rute harus menentukan klausa SERVICE_NAME dan klausa BROKER_INSTANCE. Rute yang menentukan 'LOCAL' atau 'TRANSPORT' untuk next_hop_address mungkin tidak menentukan alamat cermin.

Catatan

Opsi ini tidak tersedia dalam database mandiri.

Keterangan

Tabel perutean yang menyimpan rute adalah tabel metadata yang dapat dibaca melalui tampilan katalog sys.routes . Tabel perutean hanya dapat diperbarui melalui pernyataan CREATE ROUTE, ALTER ROUTE, dan DROP ROUTE.

Klausul yang tidak ditentukan dalam perintah ALTER ROUTE tetap tidak berubah. Oleh karena itu, Anda tidak dapat MENGUBAH rute untuk menentukan bahwa rute tidak kehabisan waktu, bahwa rute cocok dengan nama layanan apa pun, atau bahwa rute cocok dengan instans broker apa pun. Untuk mengubah karakteristik rute ini, Anda harus menghilangkan rute yang ada dan membuat rute baru dengan informasi baru.

Ketika rute menentukan 'TRANSPORT' untuk next_hop_address, alamat jaringan ditentukan berdasarkan nama layanan. SQL Server dapat berhasil memproses nama layanan yang dimulai dengan alamat jaringan dalam format yang valid untuk next_hop_address. Layanan dengan nama yang berisi alamat jaringan yang valid akan dirutekan ke alamat jaringan dalam nama layanan.

Tabel perutean dapat berisi sejumlah rute yang menentukan layanan, alamat jaringan, dan/atau pengidentifikasi instans broker yang sama. Dalam hal ini, Service Broker memilih rute menggunakan prosedur yang dirancang untuk menemukan kecocokan yang paling tepat antara informasi yang ditentukan dalam percakapan dan informasi dalam tabel perutean.

Untuk mengubah OTORISASI untuk layanan, gunakan pernyataan ALTER AUTHORIZATION.

Izin

Izin untuk mengubah default rute ke pemilik rute, anggota peran database tetap db_ddladmin atau db_owner , dan anggota peran server tetap sysadmin .

Contoh

J. Mengubah layanan untuk rute

Contoh berikut memodifikasi ExpenseRoute rute untuk menunjuk ke layanan //Adventure-Works.com/Expensesjarak jauh .

ALTER ROUTE ExpenseRoute  
   WITH   
     SERVICE_NAME = '//Adventure-Works.com/Expenses';  

B. Mengubah database target untuk rute

Contoh berikut mengubah database target untuk ExpenseRoute rute ke database yang diidentifikasi oleh pengidentifikasi unik D8D4D268-00A3-4C62-8F91-634B89B1E317.

ALTER ROUTE ExpenseRoute  
   WITH   
     BROKER_INSTANCE = 'D8D4D268-00A3-4C62-8F91-634B89B1E317';  

C. Mengubah alamat untuk rute

Contoh berikut mengubah alamat jaringan untuk rute ke ExpenseRoute port 1234 TCP pada host dengan alamat 10.2.19.72IP .

ALTER ROUTE ExpenseRoute   
   WITH   
     ADDRESS = 'TCP://10.2.19.72:1234';  

D. Mengubah database dan alamat untuk rute

Contoh berikut mengubah alamat jaringan untuk rute ke ExpenseRoute port 1234 TCP pada host dengan nama www.Adventure-Works.comDNS . Ini juga mengubah database target ke database yang diidentifikasi oleh pengidentifikasi D8D4D268-00A3-4C62-8F91-634B89B1E317unik .

ALTER ROUTE ExpenseRoute  
   WITH   
     BROKER_INSTANCE = 'D8D4D268-00A3-4C62-8F91-634B89B1E317',  
     ADDRESS = 'TCP://www.Adventure-Works.com:1234';  

Lihat Juga

BUAT RUTE (Transact-SQL)
DROP ROUTE (Transact-SQL)
EVENTDATA (Transact-SQL)