ALTER ROUTE (Transact-SQL)

Actualizado: 15 de septiembre de 2007

Modifica la información de ruta de una ruta existente.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • route_name
    Es el nombre de la ruta que se va a cambiar. No se pueden especificar nombres de servidor, base de datos o esquema.
  • WITH
    Presenta las cláusulas que definen la ruta que se va a modificar.
  • SERVICE_NAME ='service_name'
    Especifica el nombre del servicio remoto señalado por esta ruta. service_name debe coincidir exactamente con el nombre que utiliza el servicio remoto. Service Broker utiliza una comparación byte por byte para service_name. Es decir, la comparación distingue mayúsculas de minúsculas y no tiene en cuenta la intercalación actual. Una ruta con el nombre de servicio 'SQL/ServiceBroker/BrokerConfiguration' es una ruta a un servicio de notificación de configuración del broker. Es posible que una ruta a este servicio no especifique una instancia de broker.

    Si se omite la cláusula SERVICE_NAME, el nombre de servicio de la ruta no varía.

  • BROKER_INSTANCE ='broker_instance'
    Especifica la base de datos que aloja el servicio de destino. El parámetro broker_instance debe ser el identificador de la instancia de broker para la base de datos remota, que se puede obtener al ejecutar la siguiente consulta en la base de datos seleccionada:

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

    Si se omite la cláusula BROKER_INSTANCE, la instancia de broker para la ruta no varía.

  • LIFETIME **=**route_lifetime
    Especifica la cantidad de tiempo en segundos durante la que SQL Server retiene la ruta en la tabla de enrutamiento. Transcurrido este tiempo, la ruta caduca y SQL Server ya no la tiene en cuenta al elegir una ruta para una conversación nueva. Si se omite esta cláusula, la duración de la ruta no varía.
  • ADDRESS **='**next_hop_address'
    Especifica la dirección de red para esta ruta. next_hop_address especifica una dirección TCP/IP en el siguiente formato:

    TCP:// { nombreDNS | nombreNetBIOS |direcciónIP } : númeroDePuerto.

    El númeroDePuerto especificado debe coincidir con el número de puerto del extremo de Service Broker de una instancia de SQL Server en el equipo especificado. Esto se puede obtener ejecutando la consulta siguiente en la base de datos seleccionada:

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

    Si una ruta especifica 'LOCAL' para next_hop_address, el mensaje se entrega a un servicio en la instancia actual de SQL Server.

    Si una ruta especifica 'TRANSPORT' para next_hop_address, la dirección de red se determina en función de la dirección de red del nombre del servicio. Una ruta que especifica 'TRANSPORT' puede especificar un nombre de servicio o una instancia de broker.

    Si next_hop_address es el servidor principal de una base de datos reflejada, debe especificar también MIRROR_ADDRESS para el servidor reflejado. En caso contrario, esta ruta no realiza la conmutación por error automáticamente al servidor reflejado.

  • MIRROR_ADDRESS ='next_hop_mirror_address'
    Especifica la dirección de red del servidor reflejado de un par reflejado cuyo servidor principal se encuentra en next_hop_address. next_hop_mirror_address especifica una dirección TCP/IP en el siguiente formato:

    TCP://{ nombreDNS | nombreNetBIOS | direcciónIP } : númeroDePuerto.

    El númeroDePuerto especificado debe coincidir con el número de puerto del extremo de Service Broker de una instancia de SQL Server en el equipo especificado. Esto se puede obtener ejecutando la consulta siguiente en la base de datos seleccionada:

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

    Si se especifica MIRROR_ADDRESS, la ruta debe especificar la cláusula SERVICE_NAME y la cláusula BROKER_INSTANCE. Una ruta que especifica 'LOCAL' o 'TRANSPORT' para next_hop_address no puede especificar una dirección de reflejo.

Notas

La tabla de enrutamiento que almacena las rutas es una tabla de metadatos que se puede leer mediante la vista de catálogo sys.routes. La tabla de enrutamiento sólo se puede actualizar mediante las instrucciones CREATE ROUTE, ALTER ROUTE y DROP ROUTE.

Las cláusulas que no se especifican en el comando ALTER ROUTE no varían. Por consiguiente, no se puede aplicar ALTER a una ruta para especificar que dicha ruta no agota el tiempo de espera, que coincide con un nombre de servicio o que coincide con una instancia de broker. Para cambiar estas características de la ruta, debe quitar la ruta existente y crear otra ruta con la información nueva.

Si una ruta especifica 'TRANSPORT' para next_hop_address, la dirección de red se determina en función del nombre del servicio. SQL Server puede procesar de forma correcta nombres de servicio que comienzan con una dirección de red en un formato válido para next_hop_address. Los servicios con nombres que contienen direcciones de red válidas se enrutan a la dirección de red del nombre de servicio.

La tabla de enrutamiento puede contener un número indeterminado de rutas que especifican el mismo servicio, dirección de red e identificador de instancia de broker. En este caso, Service Broker elige una ruta mediante un procedimiento diseñado para buscar la coincidencia más exacta entre la información especificada en la conversación y la información de la tabla de enrutamiento. Para obtener más información sobre cómo Service Broker elige una ruta, vea Enrutamiento y redes de Service Broker.

Para modificar AUTHORIZATION para un servicio, utilice la instrucción ALTER AUTHORIZATION.

Permisos

De forma predeterminada, se concede permiso para modificar una ruta al propietario de la ruta, a los miembros de las funciones fijas de base de datos db_ddladmin o db_owner y a los miembros de la función fija de servidor sysadmin.

Ejemplos

A. Cambiar el servicio para una ruta

En el ejemplo siguiente se modifica la ruta ExpenseRoute para que señale al servicio remoto //Adventure-Works.com/Expenses.

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

B. Cambiar la base de datos de destino para una ruta

En el ejemplo siguiente se cambia la base de datos de destino para la ruta ExpenseRoute a la base de datos identificada por el identificador único D8D4D268-00A3-4C62-8F91-634B89B1E317.

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

C. Cambiar la dirección para una ruta

En el ejemplo siguiente se cambia la dirección de red para la ruta ExpenseRoute al puerto TCP 1234 en el host con la dirección IP 10.2.19.72.

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

D. Cambiar la base de datos y la dirección para una ruta

En el ejemplo siguiente se cambia la dirección de red para la ruta ExpenseRoute al puerto TCP 1234 en el host con el nombre DNS www.Adventure-Works.com y se cambia la base de datos de destino a la base de datos identificada por el identificador único D8D4D268-00A3-4C62-8F91-634B89B1E317.

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

Vea también

Referencia

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

Otros recursos

Enrutamiento de Service Broker

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

15 de septiembre de 2007

Contenido modificado:
  • Se agregaron consultas de ejemplo que muestran cómo buscar direcciones de puerto del extremo para los argumentos ADDRESS y MIRROR_ADDRESS.