ALTER ROUTE (Transact-SQL)
更新: 2007 年 9 月 15 日
修改現有路由的路由資訊。
語法
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' ]
[ ; ]
引數
- route_name
這是要變更的路由名稱。您不可指定伺服器、資料庫和結構描述名稱。
- WITH
導入定義所改變之路由的子句。
SERVICE_NAME ='service_name'
指定這個路由所指向的遠端服務名稱。service_name 必須完全符合遠端服務所用的名稱。Service Broker 利用逐一比較位元組的方式來比對 service_name。換言之,這項比較會區分大小寫,且不會考慮目前的定序。服務名稱是 'SQL/ServiceBroker/BrokerConfiguration' 的路由,是指向 Broker Configuration Notice 服務的路由。指向這項服務的路由不能指定 Broker 執行個體。如果省略 SERVICE_NAME 子句,路由的服務名稱就會維持不變。
BROKER_INSTANCE ='broker_instance'
指定主控目標服務的資料庫。broker_instance 參數必須是遠端資料庫的 Broker 執行個體識別碼,您可以在所選資料庫中執行下列查詢來取得這個識別碼:SELECT service_broker_guid FROM sys.databases WHERE database_id = DB_ID()
當省略 BROKER_INSTANCE 子句時,路由的 Broker 執行個體就會維持不變。
- LIFETIME **=**route_lifetime
指定 SQL Server 將路由保留在路由表中的時間量 (以秒為單位)。在存留期間結束時,路由會到期,SQL Server 在選擇新交談的路由時,不會再考慮這個路由。如果省略這個子句,路由的存留期間會維持不變。
ADDRESS **='**next_hop_address'
指定這個路由的網路位址。next_hop_address 用來指定 TCP/IP 位址,格式如下:TCP:// { dns_name | netbios_name |ip_address } : port_number
指定的 port_number 必須符合指定電腦上 SQL Server 執行個體之 Service Broker 端點的通訊埠編號。這可以藉由在選取的資料庫中執行下列查詢來取得:
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';
當路由在 next_hop_address 中指定 'LOCAL' 時,訊息會傳遞給在目前 SQL Server 執行個體內的服務。
當路由在 next_hop_address 內指定 'TRANSPORT' 時,會根據服務名稱中的網路位址來判斷網路位址。指定 'TRANSPORT' 的路由可以指定服務名稱或 Broker 執行個體。
當 next_hop_address 是資料庫鏡像的主體伺服器時,您也必須指定鏡像伺服器的 MIRROR_ADDRESS。否則,這個路由不會自動進行容錯移轉,將工作交給鏡像伺服器。
MIRROR_ADDRESS ='next_hop_mirror_address'
指定主體伺服器在 next_hop_address 中的鏡像組之鏡像伺服器的網路位址。next_hop_mirror_address 用來指定 TCP/IP 位址,格式如下:TCP://{ dns_name | netbios_name | ip_address } : port_number
指定的 port_number 必須符合指定電腦上 SQL Server 執行個體之 Service Broker 端點的通訊埠編號。這可以藉由在選取的資料庫中執行下列查詢來取得:
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';
當指定 MIRROR_ADDRESS 時,路由必須指定 SERVICE_NAME 子句和 BROKER_INSTANCE 子句。在 next_hop_address 中指定 'LOCAL' 或 'TRANSPORT' 的路由可能不會指定鏡像位址。
備註
儲存路由的路由表是能夠利用 sys.routes 目錄檢視來讀取的中繼資料表。您只能利用 CREATE ROUTE、ALTER ROUTE 和 DROP ROUTE 陳述式來更新路由表。
ALTER ROUTE 命令所未指定的子句會維持不變。因此,您無法變更 (ALTER) 路由來指定路由不逾時、路由符合任何服務名稱,或路由符合任何 Broker 執行個體。若要變更路由的這些特性,您必須卸除現有的路由,再以新的資訊建立新的路由。
當路由在 next_hop_address 內指定 'TRANSPORT' 時,會根據服務的名稱來判斷網路位址。SQL Server 可以順利處理開頭是網路位址且格式對 next_hop_address 有效的服務名稱。名稱包含有效網路位址的服務會遞送到服務名稱中的網路位址。
路由表可以包含指定相同服務、網路位址及 (或) Broker 執行個體識別碼之任意數目的路由。在這個情況下,Service Broker 會利用在交談所指定的資訊和路由表所指定的資訊之間,設計用來尋找完全相符項目的程序,來選擇路由。如需有關 Service Broker 如何選擇路由的詳細資訊,請參閱<Service Broker 路由和網路>。
若要改變服務的 AUTHORIZATION,請使用 ALTER AUTHORIZATION 陳述式。
權限
改變路由的權限,會預設給路由的擁有者、db_ddladmin 或 db_owner 固定資料庫角色的成員,以及系統管理員 (sysadmin) 固定伺服器角色的成員。
範例
A. 變更路由的服務
下列範例會修改 ExpenseRoute
路由來指向遠端服務 //Adventure-Works.com/Expenses
。
ALTER ROUTE ExpenseRoute
WITH
SERVICE_NAME = '//Adventure-Works.com/Expenses'
B. 變更路由的目標資料庫
下列範例將 ExpenseRoute
路由的目標資料庫變更為唯一識別碼 D8D4D268-00A3-4C62-8F91-634B89B1E317.
所識別的資料庫
ALTER ROUTE ExpenseRoute
WITH
BROKER_INSTANCE = 'D8D4D268-00A3-4C62-8F91-634B89B1E317'
C. 變更路由的位址
下列範例會將 ExpenseRoute
路由的網路位址改成 IP 位址是 10.2.19.72
之主機的 TCP 通訊埠 1234
。
ALTER ROUTE ExpenseRoute
WITH
ADDRESS = 'TCP://10.2.19.72:1234'
D. 變更路由的資料庫和位址
下列範例會將 ExpenseRoute
路由的網路位址改成 DNS 名稱是 www.Adventure-Works.com
之主機的 TCP 通訊埠 1234
,且會將目標資料庫變更為唯一識別碼 D8D4D268-00A3-4C62-8F91-634B89B1E317
所識別的資料庫。
ALTER ROUTE ExpenseRoute
WITH
BROKER_INSTANCE = 'D8D4D268-00A3-4C62-8F91-634B89B1E317',
ADDRESS = 'TCP://www.Adventure-Works.com:1234'
請參閱
參考
CREATE ROUTE (Transact-SQL)
DROP ROUTE (Transact-SQL)
EVENTDATA (Transact-SQL)
其他資源
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2007 年 9 月 15 日 |
|