Share via


ALTER ROUTE (Transact-SQL)

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

Icono de vínculo a temas Convenciones 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 el servicio remoto utiliza. Service Broker utiliza una comparación byte a byte para buscar una coincidencia con service_name. En otras palabras, en la comparación se distinguen mayúsculas y minúsculas, y no se considera 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 agente.

    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 hospeda 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.

    [!NOTA]

    Esta opción no está disponible en una base de datos independiente.

  • LIFETIME **=**route_lifetime
    Especifica el tiempo, en segundos, durante el que SQL Server retiene la ruta en la tabla de enrutamiento. Transcurrido este tiempo, la ruta expira 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 vigencia 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:// { dns_name | netbios_name |ip_address } : port_number

    El port_number especificado debe coincidir con el número de puerto del extremo de Service Broker de una instancia de SQL Server en el equipo especificado. 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 agente.

    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.

    [!NOTA]

    Esta opción no está disponible en una base de datos independiente.

  • 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://{ dns_name | netbios_name | ip_address } : port_number

    El port_number especificado debe coincidir con el número de puerto del extremo de Service Broker de una instancia de SQL Server en el equipo especificado. 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 podría no especificar una dirección de reflejo.

    [!NOTA]

    Esta opción no está disponible en una base de datos independiente.

Comentarios

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 solo 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 agente. 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 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 los roles fijos de base de datos ddl_admin o db_owner y a los miembros del rol fijo 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. También 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)