随笔-152  评论-346  文章-2  trackbacks-13

DistributionDB过大的原因

 

 

1 同一个发布库的对象被多个发布包(n)所包含,导致产生了n倍的数据

在发布库执行下面的语句,会返回被多次发布的对象

select objid,count(*) from sysarticles group by objid having(count(*)>1) order by COUNT(*) desc

2 distribution cleanup job停止工作,导致MSrepl_commands和MSrepl_transactions数据无法被清除

3 发布库中的任意一个发布的匿名订阅属性/立即初始化属性为true,这会导致全部的数据在max retention到达之前无法被删除(具体的删除逻辑见sp_MSdelete_publisherdb_trans)

在distributiondb执行下面的语句,找出存在匿名订阅/立即初始化的发布:

select a.article,p.publication from MSsubscriptions s inner join MSpublications p
on s.publication_id=p.publication_id
inner join MSarticles a  on s.article_id=a.article_id  where subscriber_id < 0
go
sp_helpdistpublisher

找到后在发布库执行以下语句即可

exec sp_changepublication @publication = 'xx' ,@property = 'allow_anonymous' , @value = false

exec sp_changepublication @publication = 'publicationTest' , @property = 'immediate_sync' , @value = false

标签: replication
posted on 2011-07-07 17:05 stswordman 阅读(140) 评论(0) 编辑 收藏
 
昵称:stswordman
园龄:5年11个月
粉丝:23
关注:0
<2011年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

我的标签

随笔分类(252)

随笔档案(182)

相册

SQL

积分与排名

  • 积分 - 197955
  • 排名 - 431

最新评论

阅读排行榜

评论排行榜

推荐排行榜