Поделиться через


ALTER ROUTE (Transact-SQL)

Изменения: 15 сентября 2007 г.

Изменяет данные о существующем маршруте.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

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

Аргументы

  • route_name
    Имя изменяемого маршрута. Имена сервера, базы данных и схемы не могут быть указаны.
  • WITH
    Представляет предложения, определяющие изменяемый маршрут.
  • SERVICE_NAME ='service_name'
    Указывает имя удаленной службы, находящейся по этому маршруту. Аргумент service_name должен точно соответствовать имени удаленной службы. Компонент Service Broker использует его побайтовое сравнение с аргументом service_name. Другими словами, сравнение чувствительно к регистру и не использует текущие параметры сортировки. Маршрут с именем службы «SQL/ServiceBroker/BrokerConfiguration» — это маршрут к службе «Уведомления конфигурации брокера». В маршруте к этой службе экземпляр брокера может не указываться.

    Если опущено предложение SERVICE_NAME, имя службы для маршрута не меняется.

  • BROKER_INSTANCE ='broker_instance'
    Указывает базу данных, в которой расположена целевая служба. Аргумент broker_instance должен являться идентификатором экземпляра брокера для удаленной базы данных. Этот идентификатор можно получить, выполнив следующий запрос в выбранной базе данных:

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

    Если опущено предложение BROKER_INSTANCE, экземпляр брокера для маршрута не меняется.

  • LIFETIME **=**route_lifetime
    Указывает время в секундах, в течение которого SQL Server хранит маршрут в таблице маршрутизации. По истечении этого времени действие маршрута истекает, и SQL Server при выборе маршрута для новых диалогов далее его не рассматривает. Если данное предложение опущено, срок жизни маршрута не меняется.
  • ADDRESS **='**next_hop_address'
    Указывает сетевой адрес для данного маршрута. Аргумент next_hop_address задает адрес TCP/IP в следующем формате:

    TCP:// { имя_dns | имя_netbios |ip_адрес } : номер_порта

    Указанный аргумент номер_порта должен соответствовать номеру порта конечной точки компонента Service Broker экземпляра Service Broker на указанном компьютере. Его можно получить, выполнив в выбранной базе данных следующий запрос:

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

    Если для маршрута в аргументе next_hop_address указывается значение 'LOCAL', сообщение доставляется службе текущего экземпляра SQL Server.

    Если в аргументе next_hop_address указывается значение 'TRANSPORT', сетевой адрес определяется на основе сетевого адреса, указанного в имени службы. Маршрут со значением 'TRANSPORT' может обозначать имя службы или экземпляр брокера.

    Если аргумент next_hop_address является основным сервером для зеркала базы данных, для зеркального сервера также необходимо указать MIRROR_ADDRESS. Иначе данный маршрут не перейдет к зеркальному серверу автоматически.

  • MIRROR_ADDRESS ='next_hop_mirror_address'
    Указывает сетевой адрес для зеркального сервера зеркальной пары, чей основной сервер находится по адресу next_hop_address. Аргумент next_hop_mirror_address задает адрес TCP/IP в следующем формате:

    TCP://{ имя_dns | имя_netbios | ip_адрес } : номер_порта

    Указанный аргумент номер_порта должен соответствовать номеру порта конечной точки компонента Service Broker экземпляра Service Broker на указанном компьютере. Его можно получить, выполнив в выбранной базе данных следующий запрос:

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

    Если указано предложение MIRROR_ADDRESS, маршрут должен указать предложения SERVICE_NAME и BROKER_INSTANCE. Для маршрутов с аргументом next_hop_address, равным 'LOCAL' или 'TRANSPORT', адрес зеркала указывать нельзя.

Замечания

Таблица маршрутизации, хранящая маршруты, представляет собой таблицу метаданных, данные из которой могут быть получены с помощью представления каталога sys.routes. Таблица маршрутизации может быть обновлена только с помощью инструкций CREATE ROUTE, ALTER ROUTE и DROP ROUTE.

Предложения, не указанные в команде ALTER ROUTE, остаются неизменными. Таким образом, команда ALTER не может быть использована для указания того, что маршрут не блокируется по времени, что он соответствует какому-либо имени службы или экземпляру брокера. Чтобы изменить эти параметры маршрута, необходимо удалить существующий маршрут и создать новый с обновленными сведениями.

Если в аргументе next_hop_address указывается значение 'TRANSPORT', сетевой адрес определяется на основе имени службы. SQL Server может успешно обрабатывать имена служб, начинающиеся с сетевого адреса в допустимом для аргумента next_hop_address формате. Службы с именами, содержащими действительные сетевые адреса, создадут маршрут к сетевому адресу в имени службы.

Таблица маршрутизации может содержать любое количество маршрутов, в которых указаны имя службы, сетевой адрес или идентификатор экземпляра брокера. В этих случаях компонент Service Broker производит выбор маршрута при помощи процедуры поиска наиболее точного соответствия сведений, указанных в диалоге, данным, содержащимся в таблице маршрутизации. Дополнительные сведения о выборе маршрута компонентом Service Broker см. в разделе Маршрутизация и работа в сети компонента Service Broker.

Чтобы изменить свойство AUTHORIZATION для службы, используйте инструкцию ALTER AUTHORIZATION.

Разрешения

По умолчанию разрешением на удаление значений маршрута по умолчанию обладает владелец маршрута, члены фиксированной роли базы данных db_ddladmin или db_owner и члены фиксированной серверной роли sysadmin.

Примеры

A. Изменение службы для маршрута

В следующем примере маршрут ExpenseRoute изменяется таким образом, чтобы указывать на удаленную службу //Adventure-Works.com/Expenses.

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

Б. Изменение целевой базы данных для маршрута

В следующем примере целевая база данных для маршрута ExpenseRoute изменяется на базу данных, определяемую уникальным идентификатором D8D4D268-00A3-4C62-8F91-634B89B1E317.

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

В. Изменение адреса маршрута

В следующем примере сетевой адрес для маршрута ExpenseRoute к порту TCP 1234 на узле изменяется на IP-адрес 10.2.19.72.

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

Г. Изменение базы данных и адреса маршрута

В следующем примере сетевой адрес для маршрута ExpenseRoute к порту TCP 1234 на узле заменяется DNS-именем www.Adventure-Works.com, а целевая база данных — базой, определяемой уникальным идентификатором D8D4D268-00A3-4C62-8F91-634B89B1E317.

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

См. также

Справочник

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

Другие ресурсы

Маршрутизация компонента Service Broker

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

15 сентября 2007 г.

Изменения
  • Добавлены примеры запросов, показывающие, как найти адреса портов конечных точек для аргументов ADDRESS MIRROR_ADDRESS.