Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure 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)