ALTER ROUTE (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Memodifikasi informasi rute untuk rute yang ada di SQL Server.
Sintaks
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' ]
[ ; ]
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 | ip_address netbios_name | } : 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:
ip_address TCP://{ dns_name | netbios_name | } : 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/Expenses
jarak 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.72
IP .
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.com
DNS . Ini juga mengubah database target ke database yang diidentifikasi oleh pengidentifikasi D8D4D268-00A3-4C62-8F91-634B89B1E317
unik .
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)