共用方式為


ALTER ROUTE (Transact-SQL)

更新: 2007 年 9 月 15 日

修改現有路由的路由資訊。

主題連結圖示Transact-SQL 語法慣例

語法

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_ddladmindb_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)

其他資源

Service Broker 路由

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2007 年 9 月 15 日

變更的內容:
  • 新增範例查詢,說明如何尋找 ADDRESS 和 MIRROR_ADDRESS 引數的端點通訊埠位址。