ALTER ROUTE (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Wijzigt route-informatie voor een bestaande route in SQL Server.

Transact-SQL syntaxis-conventies

Syntax

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' ]  
[ ; ]  
  

Arguments

route_name
Is de naam van de route om te veranderen. Server-, database- en schemanamen kunnen niet worden gespecificeerd.

WITH
Introduceert de clausules die de te wijzigen route definiëren.

SERVICE_NAME ='service_name'
Specificeert de naam van de externe dienst waarnaar deze route verwijst. De service_name moet exact overeenkomen met de naam die de externe dienst gebruikt. Service Broker gebruikt een byte-voor-byte vergelijking om de service_name te matchen. Met andere woorden, de vergelijking is hoofdlettergevoelig en houdt geen rekening met de huidige collatie. Een route met de servicenaam 'SQL/ServiceBroker/BrokerConfiguration' is een route naar een Broker Configuration Notice-service. Een route naar deze dienst hoeft geen makelaarsinstantie te specificeren.

Als de SERVICE_NAME clausule wordt weggelaten, blijft de dienstnaam van de route ongewijzigd.

BROKER_INSTANCE ='broker_instance'
Specificeert de database die de doeldienst host. De parameter broker_instance moet de broker-instantie-identificatie zijn voor de externe database, die kan worden verkregen door de volgende query uit te voeren in de geselecteerde database:

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

Wanneer de BROKER_INSTANCE clausule wordt weggelaten, blijft de broker-instantie voor de route ongewijzigd.

Note

Deze optie is niet beschikbaar in een besloten database.

LEVENSLANGE =route_lifetime
Specificeert de tijd, in seconden, waarin SQL Server de route in de routeringstabel behoudt. Aan het einde van de levensduur verloopt de route en houdt SQL Server de route niet langer mee bij het kiezen van een route voor een nieuw gesprek. Als deze clausule wordt weggelaten, blijft de levensduur van de route ongewijzigd.

ADRES ='next_hop_address'

Voor Azure SQL Managed Instance ADDRESS moet lokaal zijn.

Geeft het netwerkadres voor deze route op. De next_hop_address specificeert een TCP/IP-adres in het volgende formaat:

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

De gespecificeerde port_number moet overeenkomen met het poortnummer van het Service Broker-eindpunt van een instantie van SQL Server op de opgegeven computer. Dit kan worden verkregen door de volgende zoekopdracht uit te voeren in de geselecteerde database:

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';  

Wanneer een route 'LOCAL' specificeert voor de next_hop_address, wordt het bericht geleverd aan een dienst binnen de huidige instantie van SQL Server.

Wanneer een route 'TRANSPORT' specificeert voor de next_hop_address, wordt het netwerkadres bepaald op basis van het netwerkadres in de naam van de dienst. Een route die 'TRANSPORT' specificeert, kan een servicenaam of broker-instantie aangeven.

Wanneer de next_hop_address de hoofdserver is voor een databasespiegel, moet je ook het MIRROR_ADDRESS voor de spiegelserver specificeren. Anders failover deze route niet automatisch naar de mirrorserver.

Note

Deze optie is niet beschikbaar in een besloten database.

MIRROR_ADDRESS ='next_hop_mirror_address'
Specificeert het netwerkadres van de spiegelserver van een gespiegeld paar waarvan de hoofdserver zich op de next_hop_address bevindt. De next_hop_mirror_address specificeert een TCP/IP-adres in het volgende formaat:

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

De gespecificeerde port_number moet overeenkomen met het poortnummer van het Service Broker-eindpunt van een instantie van SQL Server op de opgegeven computer. Dit kan worden verkregen door de volgende zoekopdracht uit te voeren in de geselecteerde database:

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';  

Wanneer de MIRROR_ADDRESS wordt gespecificeerd, moet de route de SERVICE_NAME clausule en de BROKER_INSTANCE clausule specificeren. Een route die 'LOCAL' of 'TRANSPORT' specificeert voor de next_hop_address hoeft geen spiegeladres te specificeren.

Note

Deze optie is niet beschikbaar in een besloten database.

Remarks

De routeringstabel die de routes opslaat, is een metadatatabel die kan worden gelezen via de sys.routes catalogusweergave. De routeringstabel kan alleen worden bijgewerkt via de CREATE ROUTE, ALTER ROUTE, en DROP ROUTE instructies.

Bepalingen die niet in het ALTER ROUTE commando zijn gespecificeerd, blijven ongewijzigd. Daarom kun je een route niet AANPASSEN om te specificeren dat de route niet uitloopt, dat de route overeenkomt met een servicenaam, of dat de route overeenkomt met een broker-instantie. Om deze kenmerken van een route te veranderen, moet je de bestaande route laten vallen en een nieuwe route aanmaken met de nieuwe informatie.

Wanneer een route 'TRANSPORT' specificeert voor de next_hop_address, wordt het netwerkadres bepaald op basis van de naam van de dienst. SQL Server kan met succes servicenamen verwerken die beginnen met een netwerkadres in een formaat dat geldig is voor een next_hop_address. Diensten met namen die geldige netwerkadressen bevatten, worden naar het netwerkadres in de servicenaam geleid.

De routeringstabel kan elk aantal routes bevatten dat dezelfde service-, netwerkadres en/of broker-instantie-identificatie specificeert. In dit geval kiest Service Broker een route met een procedure die is ontworpen om de meest exacte match te vinden tussen de informatie die in het gesprek is gespecificeerd en de informatie in de routeringstabel.

Om de AUTHORIZATION voor een dienst te wijzigen, gebruik je de ALTER AUTHORIZATION verklaring.

Permissions

Toestemming voor het wijzigen van een route is standaard voor de eigenaar van de route, leden van de db_ddladmin of db_owner vaste databaserollen, en leden van de sysadmin vaste serverrol.

Examples

A. Wijziging van de dienst voor een route

Het volgende voorbeeld wijzigt de route zodat deze ExpenseRoute naar de externe dienst //Adventure-Works.com/Expenseswijst.

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

B. De doeldatabase wijzigen voor een route

Het volgende voorbeeld verandert de doel-database voor de ExpenseRoute route naar de database die is geïdentificeerd door de unieke identificatie D8D4D268-00A3-4C62-8F91-634B89B1E317.

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

C. Het adres wijzigen van een route

Het volgende voorbeeld verandert het netwerkadres voor de ExpenseRoute route naar de TCP-poort 1234 op de host met het IP-adres 10.2.19.72.

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

D. Het wijzigen van de database en het adres van een route

Het volgende voorbeeld verandert het netwerkadres voor de ExpenseRoute route naar de TCP-poort 1234 op de host met de DNS-naam www.Adventure-Works.com. Het verandert ook de doel-database naar de database die is geïdentificeerd door de unieke identificatie D8D4D268-00A3-4C62-8F91-634B89B1E317.

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

Zie ook

CREATE ROUTE (Transact-SQL)
DROP ROUTE (Transact-SQL)
EVENTDATA (Transact-SQL)