ALTER ROUTE (Transact-SQL)ALTER ROUTE (Transact-SQL)

Dieses Thema gilt für:JaSQL Server (ab 2008)JaAzure SQL-Datenbank (nur verwaltete Instanz)keineAzure SQL Data Warehouse keineParallel Datawarehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL Database (Managed Instance only)noAzure SQL Data Warehouse noParallel Data Warehouse

Verändert die Routeninformationen für eine vorhandene Route in SQL ServerSQL Server.Modifies route information for an existing route in SQL ServerSQL Server.

Wichtig

Auf Azure SQL-Datenbank verwaltete Instanz, diese T-SQL-Funktion hat bestimmte verhaltensänderungen.On Azure SQL Database Managed Instance, this T-SQL feature has certain behavior changes. Finden Sie unter Azure SQL-Datenbank verwaltet Instanz T-SQL-Unterschiede zu SQL Server Details für alle T-SQL-verhaltensänderungen.See Azure SQL Database Managed Instance T-SQL differences from SQL Server for details for all T-SQL behavior changes.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax


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

ArgumenteArguments

route_nameroute_name
Der Name der zu ändernden Route.Is the name of the route to change. Server-, Datenbank- und Schemaname können nicht angegeben werden.Server, database, and schema names cannot be specified.

mitWITH
Führt die Klauseln ein, die die Route definieren, die gerade geändert wird.Introduces the clauses that define the route being altered.

SERVICE_NAME ='service_name'SERVICE_NAME ='service_name'
Gibt den Namen des Remotediensts an, auf den diese Route zeigt.Specifies the name of the remote service that this route points to. Der service_name muss genau mit dem Namen übereinstimmen, der vom Remotedienst verwendet wird.The service_name must exactly match the name the remote service uses. Service BrokerService Broker führt einen bitweisen Vergleich mit der service_name-Zeichenfolge aus. uses a byte-by-byte comparison to match the service_name. Anders ausgedrückt: Bei dem Vergleich wird die Groß-/Kleinschreibung beachtet, die aktuelle Sortierung hingegen wird nicht berücksichtigt.In other words, the comparison is case sensitive and does not consider the current collation. Eine Route mit dem Dienstnamen 'SQL/ServiceBroker/BrokerConfiguration' ist eine Route zu einem Broker-Konfigurationsdienst.A route with a service name of 'SQL/ServiceBroker/BrokerConfiguration' is a route to a Broker Configuration Notice service. Eine Route zu diesem Dienst kann keine Broker-Instanz angeben.A route to this service might not specify a broker instance.

Wird die SERVICE_NAME-Klausel weggelassen, ändert sich der Dienstname für die Route nicht.If the SERVICE_NAME clause is omitted, the service name for the route is unchanged.

BROKER_INSTANCE ='broker_instance'BROKER_INSTANCE ='broker_instance'
Gibt die Datenbank an, auf der sich der Zieldienst befindet.Specifies the database that hosts the target service. Bei dem broker_instance-Parameter muss es sich um den Broker-Instanzbezeichner für die Remotedatenbank handeln, der durch das Ausführen der folgenden Abfrage in der ausgewählten Datenbank abgerufen werden kann:The broker_instance parameter must be the broker instance identifier for the remote database, which can be obtained by running the following query in the selected database:

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

Wird die BROKER_INSTANCE-Klausel weggelassen, ändert sich die Broker-Instanz für die Route nicht.When the BROKER_INSTANCE clause is omitted, the broker instance for the route is unchanged.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.This option is not available in a contained database.

LIFETIME =route_lifetimeLIFETIME =route_lifetime
Gibt die Zeitspanne in Sekunden an, die SQL ServerSQL Server die Route in der Routingtabelle aufbewahrt.Specifies the time, in seconds, that SQL ServerSQL Server retains the route in the routing table. Am Ende ihrer Lebensdauer läuft die Route ab, und SQL ServerSQL Server berücksichtigt die Route nicht bei der Auswahl einer Route für eine neue Konversation.At the end of the lifetime, the route expires, and SQL ServerSQL Server no longer considers the route when choosing a route for a new conversation. Wird die Klausel weggelassen, bleibt die Lebensdauer der Route unverändert.If this clause is omitted, the lifetime of the route is unchanged.

ADDRESS ='next_hop_address'ADDRESS ='next_hop_address'

Für die verwaltete SQL-Datenbank-Instanz muss ADDRESS lokal sein.For SQL Database Managed Instance, ADDRESS must be local.

Gibt die Netzwerkadresse für diese Route an.Specifies the network address for this route. next_hop_address gibt eine TCP/IP-Adresse mit folgendem Format an:The next_hop_address specifies a TCP/IP address in the following format:

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

Der angegebene Wert für port_number muss mit der Portnummer für den Service BrokerService Broker-Endpunkt einer Instanz von SQL ServerSQL Server auf dem angegebenen Computer übereinstimmen.The specified port_number must match the port number for the Service BrokerService Broker endpoint of an instance of SQL ServerSQL Server at the specified computer. Dieser kann durch Ausführen der folgenden Abfrage in der ausgewählten Datenbank abgerufen werden:This can be obtained by running the following query in the selected 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';  

Gibt eine Route 'LOCAL' für next_hop_address an, wird die Nachricht an einen Dienst innerhalb der aktuellen Instanz von SQL ServerSQL Server übermittelt.When a route specifies 'LOCAL' for the next_hop_address, the message is delivered to a service within the current instance of SQL ServerSQL Server.

Gibt eine Route 'TRANSPORT' für next_hop_address an, wird die Netzwerkadresse auf der Basis der Netzwerkadresse im Dienstnamen ermittelt.When a route specifies 'TRANSPORT' for the next_hop_address, the network address is determined based on the network address in the name of the service. Eine Route, die 'TRANSPORT' angibt, kann einen Dienstnamen oder eine Broker-Instanz angeben.A route that specifies 'TRANSPORT' can specify a service name or broker instance.

Wenn next_hop_address der Prinzipalserver für den Datenbankspiegel ist, müssen Sie für den Spiegelserver auch MIRROR_ADDRESS angeben.When the next_hop_address is the principal server for a database mirror, you must also specify the MIRROR_ADDRESS for the mirror server. Andernfalls führt diese Route kein automatisches Failover zum Spiegelserver durch.Otherwise, this route does not automatically failover to the mirror server.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.This option is not available in a contained database.

MIRROR_ADDRESS ='next_hop_mirror_address'MIRROR_ADDRESS ='next_hop_mirror_address'
Gibt die Netzwerkadresse für den Spiegelserver eines gespiegelten Paars an, dessen Prinzipalserver die Adresse next_hop_address besitzt.Specifies the network address for the mirror server of a mirrored pair whose principal server is at the next_hop_address. next_hop_mirror_address gibt eine TCP/IP-Adresse mit folgendem Format an:The next_hop_mirror_address specifies a TCP/IP address in the following format:

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

Der angegebene Wert für port_number muss mit der Portnummer für den Service BrokerService Broker-Endpunkt einer Instanz von SQL ServerSQL Server auf dem angegebenen Computer übereinstimmen.The specified port_number must match the port number for the Service BrokerService Broker endpoint of an instance of SQL ServerSQL Server at the specified computer. Dieser kann durch Ausführen der folgenden Abfrage in der ausgewählten Datenbank abgerufen werden:This can be obtained by running the following query in the selected 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';  

Wird MIRROR_ADDRESS angegeben, muss die Route die SERVICE_NAME-Klausel und die BROKER_INSTANCE-Klausel angeben.When the MIRROR_ADDRESS is specified, the route must specify the SERVICE_NAME clause and the BROKER_INSTANCE clause. Eine Route, die 'LOCAL' oder 'TRANSPORT' für next_hop_address angibt, gibt möglicherweise keine Spiegeladresse an.A route that specifies 'LOCAL' or 'TRANSPORT' for the next_hop_address might not specify a mirror address.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.This option is not available in a contained database.

RemarksRemarks

Die Routingtabelle, in der die Routen gespeichert werden, ist eine Metadatentabelle, die über die sys.routes-Katalogsicht gelesen werden kann.The routing table that stores the routes is a meta-data table that can be read through the sys.routes catalog view. Die Routingtabelle kann nur mit der CREATE ROUTE-, ALTER ROUTE- und DROP ROUTE-Anweisung aktualisiert werden.The routing table can only be updated through the CREATE ROUTE, ALTER ROUTE, and DROP ROUTE statements.

Klauseln, die im ALTER ROUTE-Befehl nicht angegeben werden, bleiben unverändert.Clauses that are not specified in the ALTER ROUTE command remain unchanged. Deshalb ist es nicht möglich, über ALTER festzulegen, dass für die Route kein Timeout gilt, dass die Route mit jedem Dienstnamen übereinstimmt oder dass die Route mit jeder Broker-Instanz übereinstimmt.Therefore, you cannot ALTER a route to specify that the route does not time out, that the route matches any service name, or that the route matches any broker instance. Wenn Sie diese Merkmale einer Route ändern möchten, müssen Sie die vorhandene Route löschen und eine neue Route mit den neuen Informationen erstellen.To change these characteristics of a route, you must drop the existing route and create a new route with the new information.

Gibt eine Route 'TRANSPORT' für next_hop_address an, wird die Netzwerkadresse auf der Basis der Netzwerkadresse im Dienstnamen ermittelt.When a route specifies 'TRANSPORT' for the next_hop_address, the network address is determined based on the name of the service. SQL ServerSQL Server kann Dienstnamen erfolgreich verarbeiten, die mit einer Netzwerkadresse in einem für eine next_hop_address gültigen Format beginnen. can successfully process service names that begin with a network address in a format that is valid for a next_hop_address. Für Dienste mit Namen, die gültige Netzwerkadressen enthalten, erfolgt das Routing an die Netzwerkadresse im Dienstnamen.Services with names that contain valid network addresses will route to the network address in the service name.

Die Routingtabelle kann eine beliebige Anzahl von Routen enthalten, die den gleichen Dienst, die gleiche Netzwerkadresse und/oder Broker-Instanz-ID angeben.The routing table can contain any number of routes that specify the same service, network address, and/or broker instance identifier. In diesem Fall wählt Service BrokerService Broker eine Route mithilfe einer Prozedur aus, die darauf ausgerichtet ist, eine möglichst genaue Übereinstimmung zwischen den in der Konversation angegebenen Informationen und den Informationen in der Routingtabelle festzustellen.In this case, Service BrokerService Broker chooses a route using a procedure designed to find the most exact match between the information specified in the conversation and the information in the routing table.

Verwenden Sie die ALTER AUTHORIZATION-Anweisung, wenn Sie AUTHORIZATION für einen Dienst ändern möchten.To alter the AUTHORIZATION for a service, use the ALTER AUTHORIZATION statement.

BerechtigungenPermissions

Die Berechtigung zum Ändern einer Route erhalten standardmäßig der Besitzer der Route, Mitglieder der festen Datenbankrollen db_ddladmin oder db_owner sowie Mitglieder der festen Serverrolle sysadmin.Permission for altering a route defaults to the owner of the route, members of the db_ddladmin or db_owner fixed database roles, and members of the sysadmin fixed server role.

BeispieleExamples

A.A. Ändern des Diensts für eine RouteChanging the service for a route

Im folgenden Beispiel wird die Route ExpenseRoute so geändert, dass sie auf den Remotedienst //Adventure-Works.com/Expenses zeigt.The following example modifies the ExpenseRoute route to point to the remote service //Adventure-Works.com/Expenses.

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

B.B. Ändern der Zieldatenbank für eine RouteChanging the target database for a route

Im folgenden Beispiel wird die Zieldatenank für die Route ExpenseRoute in die Datenbank geändert, die durch folgenden eindeutigen Bezeichner angegeben wird: D8D4D268-00A3-4C62-8F91-634B89B1E317.The following example changes the target database for the ExpenseRoute route to the database identified by the unique identifier D8D4D268-00A3-4C62-8F91-634B89B1E317.

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

C.C. Ändern der Adresse für eine RouteChanging the address for a route

Im folgenden Beispiel wird die Netzwerkadresse für die Route ExpenseRoute in den TCP-Port 1234 auf dem Host mit der IP-Adresse 10.2.19.72 geändert.The following example changes the network address for the ExpenseRoute route to TCP port 1234 on the host with the IP address 10.2.19.72.

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

D.D. Ändern der Datenbank und Adresse für eine RouteChanging the database and address for a route

Im folgenden Beispiel wird die Netzwerkadresse für die Route ExpenseRoute in den TCP-Port 1234 auf dem Host mit dem DNS-Namen www.Adventure-Works.com geändert.The following example changes the network address for the ExpenseRoute route to TCP port 1234 on the host with the DNS name www.Adventure-Works.com. Zudem wird die Zieldatenbank in die durch den eindeutigen Bezeichner D8D4D268-00A3-4C62-8F91-634B89B1E317 identifizierte Datenbank geändert.It also changes the target database to the database identified by the unique identifier D8D4D268-00A3-4C62-8F91-634B89B1E317.

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

Weitere Informationen finden Sie unterSee Also

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