我有一个在数据库服务器上运行的SQL Server可用性组中的数据库。
如果我login到我的Web服务器并通过数据库服务器IP直接连接到主数据库,则每次连接都是即时的。
如果我通过可用性组监听器名称或可用性组监听器的IP连接到主数据库,则它将立即连接4次,每隔4次连接超时。瞬时vs超时似乎是随机的。
我们正在Azure虚拟机上运行SQL Server 2014,如果这是相关的。 我8个小时以上,所以任何帮助将不胜感激!
看来这个问题原来是与DNS有关的。 当我将可用性组端点URL更改为内部IP地址而不是FQDN时,问题已解决。 所以对于任何碰到这个问题的人来说,这是可以尝试的(也可以应用于只读路由)。 几个SQL语句可能有助于:
查询当前设置
SELECT ag.name as "Availability Group", ar.replica_server_name as "When Primary Replica Is", rl.routing_priority as "Routing Priority", ar2.replica_server_name as "RO Routed To", ar.secondary_role_allow_connections_desc, ar2.read_only_routing_url ,* FROM sys.availability_read_only_routing_lists rl inner join sys.availability_replicas ar on rl.replica_id = ar.replica_id inner join sys.availability_replicas ar2 on rl.read_only_replica_id = ar2.replica_id inner join sys.availability_groups ag on ar.group_id = ag.group_id ORDER BY ag.name, ar.replica_server_name, rl.routing_priority
更新端点URL
ALTER AVAILABILITY GROUP [AvailabilityGroupName] MODIFY REPLICA ON 'ReplicaName' WITH (ENDPOINT_URL = 'TCP://<Internal IP>:<Port>')
我不确定为什么这是间歇性的或为什么我的networking的DNS不解决这个内部地址,而是被一个通配符Route53 DNS CNAMElogging为域。 如果我明白这一点,我会发布它,以防万一它有帮助。 感谢布鲁诺先生的帮助!