问题:
复制订阅出现:复制的事务正等待下一次日志备份或等待镜像伙伴更新
发布 'xx' 的并发快照不可用,因为该快照尚未完全生成,或者日志读取器代理未运行,无法激活它。如果并发快照的生成过程中断,则必须重新启动用于该发布的快照代理,直到生成完整的快照。
原因分析:
在同一数据库上使用镜像和复制,为保证镜像切换后,复制还能继续,因此当镜像断开或暂停时,复制日志读取器会被阻塞直到日志被同步到镜像从服务器端(无论异步还是同步)。
always on的辅助副本secondary是获取了primary的日志信息而进行的redo动作实现了数据库的同步工作。当secondary异常宕机后,为了保证secondary起来时能够继续上次读取日志的地方做redo动作,db的transaction log就不会进行备份,而一直增大,最坏的情况导致磁盘爆满,无法使用。如当前01为primary,02为secondary,为了避免failover后,02切换为主副本,而此节点却没有获取到和01一样新的replication信息,导致异常。所以所有的always on node都要知道同步的情况,否则不继续进行同步。即所有node都获取replication信息后,才允许replication继续进行
解决方案:
打开Trace flag 1448,在高性能和高安全下同样有效
DBCC TRACEON(1448,-1)
1448 甚至在异步辅助数据库不确认接受更改的情况下,也使复制日志读取器前移。 甚至在此跟踪标志启用的情况下,日志读取器也始终等待同步辅助数据库。 日志读取器将不会超过同步辅助数据库的最小确认。 此跟踪标志应用于SQL Server 的实例,而不仅是可用性组、可用性数据库或日志读取器实例。 应用会立即生效,无需重新启动。 此跟踪标志可提前激活或在同步辅助数据库失败时激活。




