Freigeben über


ALTER ROUTE (Transact-SQL)

Aktualisiert: 15. September 2007

Verändert die Routeninformationen für eine vorhandene Route.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

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

Argumente

  • route_name
    Der Name der zu ändernden Route. Server-, Datenbank- und Schemanamen können nicht angegeben werden.
  • WITH
    Führt die Klauseln ein, die die Route definieren, die gerade geändert wird.
  • SERVICE_NAME ='service_name'
    Gibt den Namen des Remotediensts an, auf den diese Route zeigt. service_name muss genau mit dem Namen übereinstimmen, den der Remotedienst verwendet. Service Broker verwendet einen Vergleich auf Byteebene, um eine Übereinstimmung für service_name festzustellen. Das heißt, bei dem Vergleich werden die Groß- und Kleinschreibung beachtet, und die aktuelle Sortierung wird nicht berücksichtigt. Eine Route mit dem Dienstnamen 'SQL/ServiceBroker/BrokerConfiguration' ist eine Route zu einem Broker-Konfigurationsdienst. Eine Route zu diesem Dienst kann keine Broker-Instanz angeben.

    Wird die SERVICE_NAME-Klausel weggelassen, ändert sich der Dienstname für die Route nicht.

  • BROKER_INSTANCE ='broker_instance'
    Gibt die Datenbank an, auf der sich der Zieldienst befindet. 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:

    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.

  • LIFETIME **=**route_lifetime
    Gibt an, wie lange (in Sekunden) SQL Server die Route in der Routingtabelle aufbewahrt. Am Ende ihrer Lebensdauer läuft die Route ab, und SQL Server berücksichtigt die Route nicht bei der Auswahl einer Route für eine neue Konversation. Wird die Klausel weggelassen, bleibt die Lebensdauer der Route unverändert.
  • ADDRESS **='**next_hop_address'
    Gibt die Netzwerkadresse für diese Route an. next_hop_address gibt eine TCP/IP-Adresse mit folgendem Format an:

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

    Der angegebene Wert für port_number muss mit der Portnummer für den Service Broker-Endpunkt einer SQL Server-Instanz auf dem angegebenen Computer übereinstimmen. Dies kann durch Ausführen der folgenden Abfrage in der ausgewählten Datenbank erreicht werden:

    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 Server übermittelt.

    Gibt eine Route 'TRANSPORT' für next_hop_address an, wird die Netzwerkadresse auf der Basis der Netzwerkadresse im Dienstnamen ermittelt. Eine Route, die 'TRANSPORT' angibt, kann einen Dienstnamen oder eine Broker-Instanz angeben.

    Wenn next_hop_address der Prinzipalserver für den Datenbankspiegel ist, müssen Sie für den Spiegelserver auch MIRROR_ADDRESS angeben. Andernfalls führt die Route kein automatisches Failover zum Spiegelserver durch.

  • MIRROR_ADDRESS ='next_hop_mirror_address'
    Gibt die Netzwerkadresse für den Spiegelserver eines gespiegelten Paares an, dessen Prinzipalserver die Adresse next_hop_address besitzt. next_hop_mirror_address gibt eine TCP/IP-Adresse mit folgendem Format an:

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

    Der angegebene Wert für port_number muss mit der Portnummer für den Service Broker-Endpunkt einer SQL Server-Instanz auf dem angegebenen Computer übereinstimmen. Dies kann durch Ausführen der folgenden Abfrage in der ausgewählten Datenbank erreicht werden:

    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. Eine Route, die 'LOCAL' oder 'TRANSPORT' für next_hop_address angibt, kann keine Spiegeladresse angeben.

Hinweise

Die Routingtabelle, in der die Routen gespeichert werden, ist eine Metadatentabelle, die über die sys.routes-Katalogsicht gelesen werden kann. Die Routingtabelle kann nur durch die Anweisungen CREATE ROUTE, ALTER ROUTE und DROP ROUTE aktualisiert werden.

Klauseln, die im ALTER ROUTE-Befehl nicht angegeben werden, bleiben unverändert. Deshalb gibt es keine Möglichkeit, über ALTER festzulegen, dass für die Route kein Timeout gilt, dass die Route mit jedem Dienstnamen übereinstimmt oder dass die Route mit jeder Borker-Instanz übereinstimmt. 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.

Gibt eine Route 'TRANSPORT' für next_hop_address an, wird die Netzwerkadresse auf der Basis des Dienstnamens ermittelt. SQL Server kann erfolgreich Dienstnamen verarbeiten, die mit einer Netzwerkadresse in einem Format beginnen, das gültig für next_hop_address ist. Für Dienste mit Namen, die gültige Netzwerkadressen enthalten, erfolgt das Routing an die Netzwerkadresse im Dienstnamen.

Die Routingtabelle kann eine beliebige Anzahl von Routen enthalten, die den gleichen Dienst, die gleiche Netzwerkadresse und/oder den gleichen Broker-Instanzbezeichner angeben. In diesem Fall wählt Service 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. Weitere Informationen zur Vorgehensweise von Service Broker beim Auswählen einer Route finden Sie unter Service Broker-Routing und -Netzwerk.

Verwenden Sie die ALTER AUTHORIZATION-Anweisung, wenn Sie AUTHORIZATION für einen Dienst ändern möchten.

Berechtigungen

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.

Beispiele

A. Ändern des Diensts für eine Route

Im folgenden Beispiel wird die Route ExpenseRoute so geändert, dass sie auf den Remotedienst //Adventure-Works.com/Expenses zeigt.

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

B. Ändern der Zieldatenbank für eine 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.

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

C. Ändern der Adresse für eine 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.

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

D. Ändern der Datenbank und der Adresse für eine 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, außerdem wird die Zieldatenbank in die Datenbank geändert, die mit dem eindeutigen Bezeichner D8D4D268-00A3-4C62-8F91-634B89B1E317 angegeben wird.

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

Siehe auch

Verweis

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

Andere Ressourcen

Service Broker-Routing

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

15. September 2007

Geänderter Inhalt:
  • Es wurden Beispielabfragen hinzugefügt, die zeigen, wie Endpunktportadressen für das ADDRESS-Argument und das MIRROR_ADDRESS-Argument gesucht werden.