none
SQL Server 2005 实时数据同步方案? RRS feed

  • 问题

  • SQL Server 2005 有没有实时数据同步方案?类似于Mysql 主主复制那种!!那位高手可否解答一下!!(Msql server 分发订阅可否可以!)
    2010年9月28日 3:13

答案

  • p2p replication 不太适合每个节点都可能同时更新同一条记录的情况, 冲突不好控制.

    合并复制会的冲突处理更好一些.

    当然, 复制是异步的, 这点在之前就有提了

    2010年9月30日 4:04

全部回复

  • sql 上实现的实时方案, 应该得用 trigger 了, 它是保证主/备都同时写入才返回信息给提交者的

    分发/订阅从处理机制上来说是异步的, 它并不在数据变更的同时, 保证把数据写入到订阅 (当然, 像事务复制这种模式, 如果你设置为实时, 那基本上延迟时间也非常短, 除非是大量数据变更或者网络不好)

    2010年9月28日 4:20
  • 使用触发器会不会很不安全和可靠!!
    2010年9月28日 8:27
  • You want to make data changes on both servers at anytime? Replication has latency no matter which rdbms.
    2010年9月28日 14:00
  • 打SP2、SP3包,可镜像<没实际部署过,据说不够稳定>

    虽然事务复制亦可,但限制多,配置、维护麻烦


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    2010年9月29日 1:47
  • 那现在用那个方案最可靠了!!事务复制模式!还是其它更好的方案?
    2010年9月29日 3:22
  • Both databases have to be online?
    2010年9月29日 3:43
  • yes!
    2010年9月29日 5:56
  • Take look at peer to peer replication.
    2010年9月29日 13:24
  • p2p replication 不太适合每个节点都可能同时更新同一条记录的情况, 冲突不好控制.

    合并复制会的冲突处理更好一些.

    当然, 复制是异步的, 这点在之前就有提了

    2010年9月30日 4:04
  • 。。。

     

     

    • 已建议为答案 老庄 2010年11月30日 9:37
    2010年11月30日 8:18
  •  

    sqlserver 数据库同步方式,一般可以考虑以下方案

    1:sql server 自带的工具

    2:第三方同步工具

    3:编码方式实现(等同于第三方同步工具)

    我们项目中,就使用了一个通用的数据库访问组件,可以实现数据实时同步到从节点;当然,也可以配置成通过sql server 自带的同步方式,或者使用第三方同步工具同步;

    如下,是一个数据库切分方案配置规则表

    <?xml version="1.0" encoding="UTF-8" ?>
    <DbLoadBalanceConfig allowCheckDbStatus="true" checkDbStatusSpanSeconds="5" weightCalType="Lztech.DbLoadBalance.WeightCalculationRoundRobin, Lztech.DbLoadBalance">
      <adminEmails emails="xxx@xxx.com|xxx@xxx.com" status="true" type="Lztech.AdministratorNotice.SendEmail,Lztech.AdministratorNotice" />
      <adminMobilePhones mobilePhones="13800008888|13900008888" status="true" type="Lztech.AdministratorNotice.SendSMS,Lztech.AdministratorNotice" />
      <DbLoadBalanceConfigs>
        <DatabaseConfigInfo uniqueDbAlias="UserMark_Base" desc="测试库">
          <splitPoints>
            <Point masterConnName="User_MasterDb" masterDbName="User_MasterDb" masterCanRead="true" masterCanWrite="true" masterStatus="true" pointBegin="0" pointEnd="0" allowSyncDataByProgram="true">
              <slaves>
                <Slave connName="User_SlaveDb1" dbName="User_SlaveDb1" canRead="true" status="true" weight="1" />
                <Slave connName="User_SlaveDb2" dbName="User_SlaveDb2" canRead="true" status="true" weight="1" />
              </slaves>
            </Point>
          </splitPoints>
          <tableNameRules>
            <TableNameRule prefix="tbUser" allowSplitTable="false" splitType="NULL" format="0" />
            <TableNameRule prefix="tbAuth" allowSplitTable="false" splitType="NULL" format="0" />
          </tableNameRules>
        </DatabaseConfigInfo>
      </DbLoadBalanceConfigs>
    </DbLoadBalanceConfig>

    实际项目中,可以根据数据规模及生产环境,做出正确的选择;因为每种方式都有利有弊。

    而且做了主从结构后,一般的工作模式是,需要定期维护的;否则,都有可能存在数据不一致的情况。

    只是提出个人看法,楼主可以参考。

     

     

    2010年11月30日 9:39
  • 用sql2005 的service broker 可以实现,具体解决方案楼主需要自己设计。
    2010年12月3日 2:47