리스너, IP, 읽기 전용 라우팅 구성 확인
SQL ServerAlways On 및 HA명령어
-- Listener, port and IP states:
SELECT ag.name AS ag_name, l.dns_name, l.port, l.is_conformant,
ip.ip_address, ip.ip_subnet_mask, ip.state_desc
FROM sys.availability_group_listeners l
JOIN sys.availability_groups ag ON ag.group_id = l.group_id
LEFT JOIN sys.availability_group_listener_ip_addresses ip ON ip.listener_id = l.listener_id;
-- Read-only routing list: where read intent goes when X is primary:
SELECT ag.name AS ag_name, pr.replica_server_name AS when_primary_is,
rl.routing_priority, sr.replica_server_name AS route_to,
sr.read_only_routing_url, sr.secondary_role_allow_connections_desc
FROM sys.availability_read_only_routing_lists rl
JOIN sys.availability_replicas pr ON pr.replica_id = rl.replica_id
JOIN sys.availability_replicas sr ON sr.replica_id = rl.read_only_replica_id
JOIN sys.availability_groups ag ON ag.group_id = pr.group_id
ORDER BY ag.name, when_primary_is, rl.routing_priority;
-- Replica endpoint and connection settings:
SELECT replica_server_name, endpoint_url, read_only_routing_url,
secondary_role_allow_connections_desc, seeding_mode_desc, session_timeout
FROM sys.availability_replicas;
-- Routing test from the command line (-d is required with -K ReadOnly):
-- sqlcmd -S tcp:AGL-Musteri,1433 -d Musteri -E -M -K ReadOnly -Q "SELECT @@SERVERNAME"하는 일
리스너 DNS 이름, 포트, 각 서브넷 IP의 클러스터 상태를 보여 준다. 읽기 전용 라우팅 목록의 각 primary 시나리오에서 read-intent 연결이 어떤 replica와 URL로 라우팅되는지 보여 준다.
사용 시점
페일오버 후 애플리케이션이 연결하지 못할 때, ApplicationIntent=ReadOnly 연결이 primary로 갈 때, 또는 새 서브넷/replica가 추가되었을 때.
주의
읽기 전용 라우팅은 ApplicationIntent=ReadOnly와 명시적 데이터베이스로 리스너를 통해 연결한 경우에만 동작한다. 인스턴스 이름으로 직접 연결하면 라우팅되지 않는다. read_only_routing_url이 비어 있는 replica는 라우팅 대상이 될 수 없다. 다중 서브넷 리스너에서 MultiSubnetFailover=True가 없는 클라이언트는 페일오버 후 20-30초 연결 타임아웃을 겪는다. 읽기 전용 쿼리이며 안전함.