ALTER ROUTE (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
変更するルート情報を定義するための句を、WITH の後に指定します。SERVICE_NAME ='service_name'
このルートが示すリモート サービスの名前を指定します。service_name はリモート サービスで使用される名前と正確に一致する必要があります。Service Broker では、service_name がバイト単位で照合されます。つまり、この比較では大文字と小文字が区別され、現在の照合順序は考慮されません。'SQL/ServiceBroker/BrokerConfiguration' というサービス名を持つルートは、Broker Configuration Notice サービスへのルートです。このサービスへのルートは、ブローカ インスタンスを指定できない場合があります。SERVICE_NAME 句を省略した場合、ルートのサービス名は変更されません。
BROKER_INSTANCE ='broker_instance'
対象サービスをホストするデータベースを指定します。broker_instance パラメータは、リモート データベース用のブローカ インスタンス識別子である必要があります。これは選択したデータベースで次のクエリを実行することにより取得できます。SELECT service_broker_guid FROM sys.databases WHERE database_id = DB_ID()
BROKER_INSTANCE 句を省略した場合、ルートのブローカ インスタンスは変更されません。
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' を指定するルートは、サービス名またはブローカ インスタンスを指定できます。
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 を使用して、ルートのタイムアウトを無効にしたり、ルートをすべてのサービス名やブローカ インスタンスと照合するような変更はできません。このようなルート情報を変更するには、既存のルートを削除して新しいルートを作成し、新しい情報を指定する必要があります。
ルートの next_hop_address が 'TRANSPORT' の場合、ネットワーク アドレスはサービスの名前に基づいて決定されます。SQL Server では、next_hop_address のネットワーク アドレスが有効な形式であれば、このネットワーク アドレスで始まるサービス名が適切に処理されます。名前に有効なネットワーク アドレスが含まれているサービスは、そのサービス名のネットワーク アドレスにルートされます。
ルートで指定されているサービス、ネットワーク アドレス、ブローカ インスタンス識別子のいずれか、またはすべてが同じであれば、ルーティング テーブルにはルートをいくつでも含めることができます。このような場合、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'