- Error number
- 19456
- Severity
- 16 (user-correctable error)
- State
- Not documented by Microsoft (not reproduced here)
- Product
- Microsoft SQL Server Database Engine
- Versions
- SQL Server 2016 to 2025 with Always On availability groups on a Windows Server Failover Cluster
- Category
- High Availability
- Last reviewed
- 24 October 2026
On this page
What it means
Error 19456 means the availability group has a listener, but the server named in the message has no public cluster network in the subnet of any listener IP address, so the listener could not move to that server.
A listener is a cluster network name with one IP address per subnet it serves. Whichever server hosts the primary replica must be able to bring one of those IP addresses online, and the cluster only places an IP address on a network that covers its subnet and allows client access (a public cluster network). When SQL Server checks a server that might own the listener (typically while you add or join a replica, add a listener, or fail over) and none of the listener IP addresses fits any public network on it, it stops with 19456 instead of leaving the listener unreachable.
The name in quotes is the server that failed the check, not the server you are connected to. Compare the subnets of the listener IP addresses with the networks that server has in the cluster: in almost every case it sits in a subnet the listener does not cover yet (a new data centre, an Azure region, a DR site), or its network in that subnet is set for cluster traffic only.
Common causes
- A multi-subnet availability group: a replica in a new subnet was added or joined, but the listener has IP addresses only for the other subnets.
- The cluster network in that server's subnet is not public: in Failover Cluster Manager it does not allow clients to connect through it (cluster communication only), or cluster use is disabled.
- The listener IP address was entered with the wrong subnet mask, so it does not fall inside any network the server has.
- The server has a new or reconfigured network adapter whose subnet the cluster has not mapped to a cluster network yet.
Diagnose it
Read-only These queries only read metadata and dynamic management views. They do not change data, permissions or configuration, so they are safe to run first.
Which IP addresses and subnets does the listener have?
SELECT ag.name AS ag_name, l.dns_name, l.port, ip.ip_address, ip.ip_subnet_mask,
ip.network_subnet_ip, ip.network_subnet_prefix_length, ip.is_dhcp, ip.state_desc
FROM sys.availability_group_listeners AS l
JOIN sys.availability_groups AS ag ON ag.group_id = l.group_id
JOIN sys.availability_group_listener_ip_addresses AS ip ON ip.listener_id = l.listener_id; One row per listener IP address. Note every network_subnet_ip: the server named in the message needs a public cluster network in one of these subnets. Normally only the address in the current primary's subnet is ONLINE.
Which public cluster networks does each node have?
SELECT member_name, network_subnet_ip, network_subnet_ipv4_mask,
network_subnet_prefix_length, is_public, is_ipv4
FROM sys.dm_hadr_cluster_networks
ORDER BY member_name, network_subnet_ip; Find the rows for the server in the message. If none of its subnets with is_public = 1 matches a listener subnet from the first query, that is the cause. A matching subnet with is_public = 0 means the network does not allow client access.
Which replicas belong to the availability group?
SELECT ag.name AS ag_name, ar.replica_server_name, ar.endpoint_url,
ar.availability_mode_desc, ar.failover_mode_desc
FROM sys.availability_replicas AS ar
JOIN sys.availability_groups AS ag ON ag.group_id = ar.group_id
ORDER BY ag.name, ar.replica_server_name; The address in endpoint_url shows which subnet each replica sits in. Every replica that can become primary needs a listener IP address in its subnet.
How to fix it
Each fix is labelled with what it changes. Try read-only checks and the least invasive fix first, and test changes outside production.
Add a listener IP address in the subnet of that server
Changes configurationGet a free static IP address in the subnet of the server named in the message (from your network team, not from DHCP) and add it to the listener on the primary replica. The cluster then has an address it can bring online on that server. Then retry the join, the replica addition or the failover.
ALTER AVAILABILITY GROUP SalesAg
MODIFY LISTENER N'SalesAgListener' (ADD IP ((N'10.20.0.50', N'255.255.255.0')));
Allow client access on the cluster network
Changes configurationIf the subnet already matches but the network is not public, open Failover Cluster Manager, Networks, the network of that subnet, Properties, and select both Allow cluster network communication on this network and Allow clients to connect through this network. Do this only for a network that is meant to carry client traffic.
Caution: Changing a cluster network role affects every clustered role that uses that network. Agree it with the cluster owner and keep dedicated heartbeat or replication networks for cluster traffic only.
# PowerShell on a cluster node (Role 3 = cluster and client)
(Get-ClusterNetwork -Name 'Cluster Network 2').Role = 3
Connect with MultiSubnetFailover
Client or network sideOnce the listener has an IP address per subnet, clients should connect with MultiSubnetFailover=True so that they try all listener addresses in parallel and reconnect quickly after a failover to the other subnet.
Examples
Joining a replica in a subnet the listener does not cover
Shown as documented by Microsoft (message text); not reproduced here because it needs a failover cluster and an availability group. Microsoft documents no state for 19456 and the query window form was not observed, so no header is shown. The server and group names are examples.
-- On SQL03, a new secondary replica in subnet 10.20.0.0/24;
-- the listener SalesAgListener only has 10.10.0.50 (subnet 10.10.0.0/24)
ALTER AVAILABILITY GROUP SalesAg JOIN;
None of the IP addresses configured for the availability group listener can be hosted by the server 'SQL03'. Either configure a public cluster network on which one of the specified IP addresses can be hosted, or add another listener IP address which can be hosted on a public cluster network for this server.
How to prevent it
Treat a new subnet as part of the availability group design: before adding a replica in another subnet or site, reserve a listener IP address there, confirm the cluster network for it allows client access, and add the address to the listener first. Keep the listener IP list and the replica list in the same build script so they stay in step.
Common questions
Does every replica need its own listener IP address?
No, every subnet does. Replicas in the same subnet share the listener IP address of that subnet; a replica in a new subnet needs a new address in that subnet before it can host the listener.
Can I use DHCP for the extra listener IP address?
No. Microsoft limits a DHCP listener to a single subnet and does not recommend DHCP in production; a listener that spans subnets needs a static IP address for each subnet.
Is the server in the message the one I am connected to?
Not necessarily. It is the server that would have to host the listener. Look up its subnets in sys.dm_hadr_cluster_networks and compare them with the listener addresses.
Learn more on CodeWithSQL
Official documentation
- Configure a listener for an Always On availability group
- sys.availability_group_listener_ip_addresses (Transact-SQL)
- sys.dm_hadr_cluster_networks (Transact-SQL)
- Database engine events and errors (19000 to 20999)
Last technically reviewed 24 October 2026; examples and diagnostics run on SQL Server 2025 (17.0.1145.4). Message text checked against the engine's sys.messages catalogue.