SQL SERVER 复制订阅报错查询命令

Sql Server

已搭建的Always On 高可用性组,查询该组上复制订阅的报错记录,在分发数据库上执行如下sql,可以查询到当前分发数据库下的所有报错记录,命令:

select * from 数据库名
--where time> convert(datetime,‘2021-08-24‘)
order by 2 desc

查到的报错各种各样,错误的详情都在字段error_text上,举个例子,如果查询到是哪个表上出了问题,如下图所示:

SQL SERVER 复制订阅报错查询命令

查找到底是哪个复制订阅,哪个数据库的表报错,可以先查询表在哪个发布库上,此处分发和发布库都是一个服务器,如下查询某个数据库所有表中,是否含有某个表,命令:

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)

这样就可以查到是报错的是那个复制订阅啦~

 

SQL SERVER 复制订阅报错查询命令

上一篇:nacos-server配置中心连接数据库失败的解决方法


下一篇:记一次现网k8s中pod连接数据库异常的问题分析及解决实践(tcp_tw_recycle与tcp_tw_reuse内核参数修改)