获取同步链agent堵塞的表以及具体条数

--用于详细查看当前实例下,受到堵塞的 表名、 命令行数、影响行数

--获取堵塞的影响行数

SELECT [article_id]
      ,[agent_id]
      ,[UndelivCmdsInDistDB]
      ,[DelivCmdsInDistDB]
  FROM [distribution].[dbo].[MSdistribution_status]
order by UndelivCmdsInDistDB desc

--获得堵塞的命令行数

  SELECT 
      t.article_id
     ,s.agent_id
     ,'UndelivCmdsInDistDB'=SUM(CASE WHEN xact_seqno > h.maxseq THEN 1 ELSE 0 END), 
		'DelivCmdsInDistDB'=SUM(CASE WHEN xact_seqno <=  h.maxseq THEN 1 ELSE 0 END) 
FROM (
	SELECT distinct article_id,publisher_database_id, xact_seqno  
	 FROM MSrepl_commands with (NOLOCK) 
) as t  JOIN
 (
	SELECT distinct agent_id,article_id,publisher_database_id 
	FROM MSsubscriptions with (NOLOCK) 
) AS s   
	ON (t.article_id = s.article_id AND t.publisher_database_id=s.publisher_database_id ) 
 JOIN (
	SELECT agent_id,'maxseq'= isnull(MAX(xact_seqno),0x0) 
	FROM MSdistribution_history WITH (NOLOCK) 
	GROUP BY agent_id
) 
as h  ON (h.agent_id=s.agent_id)  
GROUP BY t.article_id,s.agent_id    

--获取发生堵塞的表名

use distribution
go
SELECT 
    b.publisher_db
   ,b.article
   --,c.UndelivCmdsInDistDB --当前表堵塞影响行数
FROM dbo.MSsubscriptions  AS a with(nolock)
INNER JOIN dbo.MSarticles AS b with(nolock)
    ON a.publisher_id=b.publisher_id 
    AND a.publisher_db=b.publisher_db 
    AND a.article_id=b.article_id 
INNER JOIN [dbo].[MSdistribution_status] AS c with(nolock)
    ON a.agent_id=c.agent_id 
    AND a.article_id=c.article_id 
WHERE 
    a.agent_id=75 
    AND a.article_id=2



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值