ALTER ROUTE(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

SQL Server에서 기존 경로에 대한 경로 정보를 수정합니다.

Transact-SQL 구문 표기 규칙

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

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

route_name
변경할 경로의 이름입니다. 서버, 데이터베이스 및 스키마 이름은 지정될 수 없습니다.

WITH
변경되는 경로를 정의하는 절을 지정합니다.

SERVICE_NAME ='service_name'
이 경로가 가리키는 원격 서비스 이름을 지정합니다. service_name은 원격 서비스에서 사용되는 이름과 정확히 일치해야 합니다. Service Broker에서는 바이트 단위로 비교하여 일치하는 service_name을 찾습니다. 즉, 비교 시 대/소문자가 구분되고 현재 데이터 정렬은 고려되지 않습니다. 서비스 이름이 ‘SQL/ServiceBroker/BrokerConfiguration’ 인 경로는 Broker Configuration Notice 서비스에 대한 경로입니다. 이 서비스에 대한 경로에서 broker 인스턴스를 지정하지 않을 수 있습니다.

SERVICE_NAME 절이 생략되면 경로의 서비스 이름이 변경되지 않습니다.

BROKER_INSTANCE ='broker_instance'
대상 서비스를 호스팅하는 데이터베이스를 지정합니다. broker_instance 매개 변수는 선택한 데이터베이스에서 다음 쿼리를 실행하여 가져올 수 있는 원격 데이터베이스의 Broker 인스턴스 식별자여야 합니다.

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

BROKER_INSTANCE 절이 생략되면 경로의 Broker 인스턴스가 변경되지 않습니다.

참고

포함된 데이터베이스에서는 이 옵션을 사용할 수 없습니다.

LIFETIME =route_lifetime
SQL Server에서 라우팅 테이블에 경로를 유지하는 시간(초)을 지정합니다. 수명이 다되어 경로가 만료되면 SQL Server는 새 대화를 위한 경로를 선택할 때 더 이상 해당 경로를 고려하지 않습니다. 이 절이 생략되면 경로의 수명이 변경되지 않습니다.

ADDRESS ='next_hop_address'

Azure SQL Managed Instance의 경우 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' 를 지정하는 경로는 서비스 이름이나 broker 인스턴스를 지정할 수 있습니다.

next_hop_address가 데이터베이스 미러의 주 서버인 경우에는 미러 서버에 대해 MIRROR_ADDRESS도 지정해야 합니다. 그렇지 않으면 이 경로는 미러 서버에 대해 자동으로 장애 조치(Failover)하지 않습니다.

참고

포함된 데이터베이스에서는 이 옵션을 사용할 수 없습니다.

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 명령에서 지정하지 않은 절은 변경되지 않은 상태로 유지됩니다. 따라서 경로를 변경하여 경로의 제한 시간이 초과되지 않거나, 경로가 서비스 이름과 일치하거나, 경로가 모든 broker 인스턴스와 일치하도록 지정할 수는 없습니다. 이러한 경로의 특성을 변경하려면 기존 경로를 삭제하고 새 정보로 새 경로를 만들어야 합니다.

경로에 next_hop_address‘TRANSPORT’ 로 지정되어 있으면 네트워크 주소는 서비스 이름의 네트워크 주소를 기준으로 결정됩니다. SQL Server는 next_hop_address에 유효한 형식의 네트워크 주소로 시작하는 서비스 이름을 처리할 수 있습니다. 유효한 네트워크 경로를 포함하는 이름의 서비스는 서비스 이름에 있는 네트워크 경로로 라우팅됩니다.

라우팅 테이블에는 동일한 서비스, 네트워크 주소 및 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';  

B. 경로의 대상 데이터베이스 변경

다음 예에서는 ExpenseRoute 경로의 대상 데이터베이스를 D8D4D268-00A3-4C62-8F91-634B89B1E317. 고유 식별자로 식별되는 데이터베이스로 변경합니다.

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

C. 경로의 주소 변경

다음 예에서는 ExpenseRoute 경로의 네트워크 주소를 IP 주소가 1234인 호스트의 TCP 포트 10.2.19.72로 변경합니다.

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

D. 경로의 데이터베이스 및 주소 변경

다음 예에서는 ExpenseRoute 경로의 네트워크 주소를 DNS 이름이 1234인 호스트의 TCP 포트 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)