ALTER ROUTE (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Cинтаксические обозначения в 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 Broker.

    Если опущено предложение 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_name | netbios_name |ip_address } : port_number

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

    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_name | netbios_name | ip_address } : port_number

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

    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 производит выбор маршрута при помощи процедуры поиска наиболее точного соответствия сведений, указанных в диалоге, данным, содержащимся в таблице маршрутизации.

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

Разрешения

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

Примеры

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

В следующем примере маршрут 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)