Sql Server
已搭建的Always On 高可用性组,查询该组上复制订阅的报错记录,在分发数据库上执行如下sql,可以查询到当前分发数据库下的所有报错记录,命令:
select * from 数据库名 --where time> convert(datetime,‘2021-08-24‘) order by 2 desc
查到的报错各种各样,错误的详情都在字段error_text上,举个例子,如果查询到是哪个表上出了问题,如下图所示:
查找到底是哪个复制订阅,哪个数据库的表报错,可以先查询表在哪个发布库上,此处分发和发布库都是一个服务器,如下查询某个数据库所有表中,是否含有某个表,命令:
select * from sys.sysobjects where name = ‘表名‘
在发布数据库上查询系统视图内,某个表对应的pubid字段信息,dest_table为发布要写入的目标表,该命令只能查询到当前库下的信息,若服务器上有多个库,需要切换数据库查询,命令:
select * from sysarticles where dest_table = ‘表名‘
根据上一步查询到的pubid,再在syspublications系统表中查询,对应的复制订阅名称,命令如下:
select * from syspublications where pubid in (2,5,12,34,35,70)
这样就可以查到是报错的是那个复制订阅啦~