没有合适的资源?快使用搜索试试~ 我知道了~
首页【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制同步
资源详情
资源评论
资源推荐

【SQL Server高可用性】数据库复制:SQL Server 2008R2
中通过数据库复制,把A表的数据复制到B表 - SQL Server
探索 - 博客频道
2013-12-01 20:54 6912人阅读 评论(16) 收藏 举报
分类:
【SQL Server】性能优化、高可用性、数据迁移(29)
版权声明:本文为博主原创文章,未经博主允许不得转载。
经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使用链接服务器+触发
器,来实现数据同步,但当要同步的数据表比较多,那么可以考虑用数据库复制技术,来实现数据的同
步。一、使用场景数据发布和订阅,就是sql server的数据库复制技术,用于同步数据。我觉得使用情
况主要有2种:
1、适合于数据分散在不同的地区的情况。
比如,总公司,还有分公司,可能在北京,上海,广州,等地区,那么每个地区都有地区数据库,都会
有销售数据,那么通过对每个分公司的数据库进行发布,然后总公司进行订阅,那么数据就从分公司复
制到总公司,也就是发布端复制到了订阅端。
2、如果数据库很大,压力很大,读写很频繁,那么为了分担单个数据库服务器的压力,可以通过数据库
复制技术,来实现读写分离。
可以从一个数据库,把数据复制到多台服务器上,主数据库用于写,而其他几台服务器用于读取数据,
减轻主数据库的压力。3、总结一下:
一个是用于分布式数据的情况。
一个是数据库的高可用性,不仅能通过读写分离,提高性能,减轻压力,同时还能起到数据库备份的作
用。
因为太大的数据库,要再备份,估计需要花很长的时间,所以通过数据库复制,也保证了数据的安全。
二、发布类型不同的发布类型,会有不同的效果,适用于不同的场景,特别是下面的2种发布类型,需要
特别注意:快照发布:
发布服务器按预定的时间间隔向订阅服务器发送已发布数据的快照。也就是间隔时间一到,2000把数据
的快照,也就是所有数据,都发生到订阅端,一般适合同步间隔时间比较长的,比如1周才同步一次。
事务发布:
在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。
也就是,设置好后,第一次会进行初始化,然后以后每次同步的时候,只是把修改的数据,比如
insert、update、delete,同步到订阅端,一般适合对同步时间要求比较严格的情况,间隔时间可能就
10秒,或者几分钟。
总结一下:快照复制,每次都是复制所有的数据,所以如果数据量大,那么往往复制的时间会很长。

而事务复制,每次只复制变化的部分,所以速度较快。三、实验环境一台是笔记本,机器名:ggg-pc,
实例名:MSSQLSERVER另一台是安装的虚拟机,机器名:DTSCIOW1G2GJOED,实例名:MSSQLSERVER。那
么,如果不是虚拟机,能否配置成功呢?我也尝试过在两台笔记本之间,也做了事务复制,配置与上面
的类似,也同步成功了。需要注意的是在配置完成订阅端成功后,发现在复制目录下面本地订阅目录
下,没有出现订阅,这个多刷新几次就好了。
还有就是数据库引擎服务和代理服务,都是通过Local System帐号来启动的,不一定需要Administrator
帐号。
需要特别说明的是这个数据库复制,并不是实时的,最短复制间隔为10秒,所以不能完全满足高安全性
的要求,也就是当出现故障时,会有少量数据没有复制到订阅端。四、首先,分别在两个实例中分别运
行下面的代码,来创建数据库:
1. --在虚拟机上
2. createdatabasewc
3. go
4. usewc
5. go
6. createtableB
7. (
8. idintprimarykey,
9. vvarchar(100),
10. vvvarchar(100)--注意:这里比A表多了一列
11. )
12. go
五、然后,接下来就是要配置同步与订阅,来实现把A表的2列,同步到B表的2列中:首先是设置发布:
1、展开“复制”目录,选择“本地发布”,右键,选择“新建发布”

2、弹出新建发布向导,单击下一步

3、选择:把ggg-pc作为自己的分发服务器,单击下一步

4、选择:是,将SQL Server的代理服务器配置为自动启动
剩余26页未读,继续阅读


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0