zoukankan      html  css  js  c++  java
  • transactional replication 的immediate_sync属性

    在默认情况下,immediate_sync是关闭的,这个属性可以在创建publication时指定,也可以在创建完毕后修改。 如果immediate_sync为true, snapshot 文件和replicated transaction将一直保留到data retention.然后才会被删除。这会导致distribution 数据库增长,复制性能下降。 所以推荐设置为false. 需要注意的时,如果一个数据库有多个publication,只要其中有一个publication的immediate_sync为true,将会导致这个数据库的所有publication的replicated transaction的保留期都延长至data retention.

    您可以在distribution database里执行下面的语句进行检查:

    select p.publication,p.publisher_db,ser.name as publisherServer from MSpublications p inner join sys.servers ser on p.publisher_id =ser.server_id where immediate_sync=1 and publication_type =0

    语句会列出immediate_sync为true的publication以及数据库和服务器信息。下面是一个执行结果的截图。

    之后您需要去发布数据库执行下面的语句将immediate_sync禁止

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

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

    有时候一些元数据信息无法被正确修改,导致即使immediate_sync为false, replicated transaction 仍然会被保留下来。 所以需要在distribution database中进行额外的检查:

    select *From MSdistribution_agents where subscriber_id<0

    如果这个查询仍然返回结果,则说明metadata有问题了。需要手工进行删除(请在Microsoft support service的指导下执行下面的语句)

    select * into MSdistribution_agents_bak From MSdistribution_agents where subscriber_id<0

    select * into MSdistribution_history_bak From MSdistribution_history where agent_id in

    (

    select id From MSdistribution_agents where subscriber_id<0

    )

    delete From MSdistribution_history where agent_id in

    (

    select id From MSdistribution_agents where subscriber_id<0

    )

    delete From MSdistribution_agents where subscriber_id<0

  • 相关阅读:
    k邻近
    C语言实现pwd—关于linux文件系统
    Linux多线程
    有关临时表
    毕设—线程池thread_pool(草)
    3-26
    3-25
    3-22
    关于中国神华
    3-20
  • 原文地址:https://www.cnblogs.com/stswordman/p/3267688.html
Copyright © 2011-2022 走看看