ALTER ROUTE (Transact-SQL)

Aplica-se a: SQL ServerAzure SQL Managed Instance

Modifica informações de rota para uma rota existente no SQL Server.

Transact-SQL convenções de sintaxe

Syntax

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

Arguments

route_name
É o nome da rota a mudar. Nomes de servidores, bases de dados e esquemas não podem ser especificados.

WITH
Introduz as cláusulas que definem a rota a ser alterada.

SERVICE_NAME ='service_name'
Especifica o nome do serviço remoto para o qual esta rota aponta. O service_name deve corresponder exatamente ao nome que o serviço remoto utiliza. O Service Broker utiliza uma comparação byte a byte para corresponder à service_name. Por outras palavras, a comparação é sensível a maiúsculas minúsculas e não considera a colação atual. Uma rota com o nome de serviço 'SQL/ServiceBroker/BrokerConfiguration' é uma rota para um serviço de Aviso de Configuração do Broker. Uma rota para este serviço pode não especificar uma instância de corretor.

Se a cláusula SERVICE_NAME for omitida, o nome do serviço da rota mantém-se inalterado.

BROKER_INSTANCE ='broker_instance'
Especifica a base de dados que aloja o serviço alvo. O parâmetro broker_instance deve ser o identificador de instância do corredor para a base de dados remota, que pode ser obtido executando a seguinte consulta na base de dados selecionada:

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

Quando a cláusula BROKER_INSTANCE é omitida, a instância do corretor para a rota permanece inalterada.

Note

Esta opção não está disponível em um banco de dados contido.

VITALÍCIO= route_lifetime
Especifica o tempo, em segundos, em que o SQL Server mantém a rota na tabela de encaminhamento. No final da vida útil, a rota expira e o SQL Server deixa de considerar a rota ao escolher uma rota para uma nova conversa. Se esta cláusula for omitida, a vida útil da rota mantém-se inalterada.

ENDEREÇO ='next_hop_address'

Para Azure SQL Managed Instance, ADDRESS deve ser local.

Especifica o endereço de rede para esta rota. A next_hop_address especifica um endereço TCP/IP no seguinte formato:

TCP:// { dns_name | netbios_name |ip_address } :port_number

O port_number especificado deve corresponder ao número de porta do endpoint do Service Broker de uma instância de SQL Server no computador especificado. Isto pode ser obtido executando a seguinte consulta na base de dados selecionada:

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

Quando uma rota especifica 'LOCAL' para o next_hop_address, a mensagem é entregue a um serviço dentro da instância atual de SQL Server.

Quando uma rota especifica 'TRANSPORT' para o next_hop_address, o endereço de rede é determinado com base no endereço de rede no nome do serviço. Uma rota que especifica 'TRANSPORT' pode especificar um nome de serviço ou uma instância de corretor.

Quando o next_hop_address é o servidor principal para um espelho de base de dados, também deve especificar o MIRROR_ADDRESS para o servidor espelho. Caso contrário, esta rota não faz failover automático para o servidor espelho.

Note

Esta opção não está disponível em um banco de dados contido.

MIRROR_ADDRESS ='next_hop_mirror_address'
Especifica o endereço de rede para o servidor espelho de um par espelhado cujo servidor principal está na next_hop_address. A next_hop_mirror_address especifica um endereço TCP/IP no seguinte formato:

TCP://{ dns_name | netbios_name | ip_address } :port_number

O port_number especificado deve corresponder ao número de porta do endpoint do Service Broker de uma instância de SQL Server no computador especificado. Isto pode ser obtido executando a seguinte consulta na base de dados selecionada:

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

Quando a MIRROR_ADDRESS é especificada, a rota deve especificar a cláusula SERVICE_NAME e a cláusula BROKER_INSTANCE. Uma rota que especifica 'LOCAL' ou 'TRANSPORT' para a next_hop_address pode não especificar um endereço espelho.

Note

Esta opção não está disponível em um banco de dados contido.

Remarks

A tabela de encaminhamento que armazena as rotas é uma tabela de metadados que pode ser lida através da vista de catálogo sys.routes . A tabela de encaminhamento só pode ser atualizada através das CREATE ROUTEinstruções , ALTER ROUTE, e DROP ROUTE .

As cláusulas que não são especificadas no ALTER ROUTE comando mantêm-se inalteradas. Portanto, não pode ALTERAR uma rota para especificar que a rota não expira, que a rota corresponde a qualquer nome de serviço, ou que corresponde a qualquer instância do corretor. Para alterar estas características de uma rota, deve eliminar a rota existente e criar uma nova rota com a nova informação.

Quando uma rota especifica 'TRANSPORT' para o next_hop_address, o endereço de rede é determinado com base no nome do serviço. SQL Server pode processar com sucesso nomes de serviços que começam com um endereço de rede num formato válido para um next_hop_address. Os serviços cujos nomes contêm endereços de rede válidos irão encaminhar para o endereço de rede no nome do serviço.

A tabela de encaminhamento pode conter qualquer número de rotas que especifiquem o mesmo serviço, endereço de rede e/ou identificador de instância do corretor. Neste caso, o Service Broker escolhe uma rota usando um procedimento desenhado para encontrar a correspondência mais exata entre a informação especificada na conversa e a informação na tabela de encaminhamento.

Para alterar o AUTHORIZATION para um serviço, use a ALTER AUTHORIZATION declaração.

Permissions

A permissão para alterar uma rota é atribuída por defeito ao proprietário da rota, aos membros da db_ddladmin ou db_owner funções fixas na base de dados, e aos membros do sysadmin função de servidor fixo.

Examples

A. Alteração do serviço para uma rota

O exemplo seguinte modifica a ExpenseRoute rota para apontar para o serviço //Adventure-Works.com/Expensesremoto .

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

B. Alterar a base de dados alvo de uma rota

O exemplo seguinte altera a base de dados alvo para a ExpenseRoute rota para a base de dados identificada pelo identificador único D8D4D268-00A3-4C62-8F91-634B89B1E317.

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

C. Alterar o endereço de uma rota

O exemplo seguinte altera o endereço de rede da ExpenseRoute rota para a porta 1234 TCP no host com o endereço 10.2.19.72IP .

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

D. Alterar a base de dados e o endereço de uma rota

O exemplo seguinte altera o endereço de rede da ExpenseRoute rota para a porta 1234 TCP no host com o nome www.Adventure-Works.comDNS . Também altera a base de dados alvo para a base de dados identificada pelo identificador D8D4D268-00A3-4C62-8F91-634B89B1E317único .

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

Ver também

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