Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server Управляемый экземпляр SQL Azure
Изменяет сведения о маршруте для существующего маршрута в SQL Server.
Соглашения о синтаксисе 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
Имя изменяемого маршрута. Не могут быть указаны имена сервера, базы данных и схемы.
ВМЕСТЕ С
Представляет предложения, определяющие изменяемый маршрут.
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'
Для Управляемого экземпляра SQL Azure аргумент 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';
Если маршрут указывает "LOCAL" для next_hop_address, сообщение передается службе в текущем экземпляре 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';
B. Изменение целевой базы данных для маршрута
В следующем примере целевая база данных для маршрута 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';
D. Изменение базы данных и адреса маршрута
В следующем примере сетевой адрес маршрута 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)