Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure 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)