如何解决Sqlserver 2014 alwayson架构的主节点执行alter table导致从节点阻塞的问题,针对这个问题,本文详细介绍了相应的分析和解决方案,希望能帮助更多想要解决这个问题的小伙伴找到更简单更容易的方法。
环境:
Sqlserver 2014 alwayson架构
1个主节点
1个备用节点
6个只读节点
问题陈述:
只读节点被阻止,主节点无法将数据同步到该只读节点。
原因:
在主节点中执行了DDL语句,并且修改了表的字段类型。
更改表表1更改列[名称] [NVARCHAR](最大值)
此时,只读库有一个关于table1表的长事务查询。
此表1的长事务查询阻止了主节点将只读库与Alter table 1 Alter Column[name][nvarchar](max)同步。
只读节点上的table1表无法执行alter table操作。
因此,所有主节点的日志无法从主节点同步到该只读节点。
在只读节点上,对table1表的所有后续查询都被阻止。
查询主从同步脚本:
选择可用性模式desc,
角色_desc,
副本服务器名,
上次重做时间,
GETDATE()现在,
DATEDIFF(毫秒,last_redone_time,GETDATE()) diffMS
发件人((系统可用性组)
JOIN sys . availability _ replicas ar ON ag . group _ id=ar . group _ id
)
JOIN sys . DM _ hadr _ availability _ replica _ States AS ar _ state ON ar . replica _ id=ar _ state . replica _ id
)
JOIN sys . DM _ hadr _ database _ replica _ States dr _ state ON ag . group _ id=dr _ state . group _ id
AND dr _ state . replica _ id=ar _ state . replica _ id;
解决方案:
为了尽快解决这个问题,最快的方法是在只读节点上终止长事务查询的会话。
让主节点的这个alter table的DDL操作同步到只读节点,阻塞就会解决,同步就会恢复正常。
关于如何解决Sqlserver 2014 alwayson架构主节点执行alter table导致从节点阻塞的问题,这里分享一下答案。我希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/124811.html