Transaction replication只对新增的Article产生Snapshot

来源:互联网 发布:netty 好书 知乎 编辑:程序博客网 时间:2024/06/05 11:09

默认情况下在日志复制中如果新增加Article那么需要产生一个包含所有Article的Snapshot。由于产生Snapshot会加锁,同时会产生IO操作,所以对于大的数据库性能影响是很大的。

 

可以通过下面的办法让SQL Server针对增加的Article产生Snapshot

 

1.      Disable 'immediate_sync'  'allow_anonymous'选项(默认都是开启的)。

 

在发布数据库运行下面的代码(pub_AdventureWorksDW为发布名称

EXEC sp_changepublication@publication='pub_AdventureWorksDW',@property='allow_anonymous',@value='false'

 GO

 EXEC sp_changepublication@publication = 'pub_AdventureWorksDW',@property='immediate_sync',@value='false'

 GO

 

2.      在发布数据库运行sp_helpsubscription确保immediate_syncallow_anonymous值为0.

 

3.       在发布中增加新的Article(test4).

 

 

 

4. 使用sp_helpsubscription 可以看到新增的Article还没有Active.(subscription status 订阅状态:0 = 不活动1 = 已订阅 2 = 活动)

 

 

5.      启动Snapshot Agent同步化新增的Article.

 

 

6.      可以看到Snapshot指产生了一个Article,而不是所有的。新Article订阅的状态已经变为2(Active)

 

7.    在订阅服务区看到新增的Article已经存在了。

 

 

原创粉丝点击