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