SQL Server提供了多种读写分离的机制,这里只介绍下发布和订阅的方式,因为博主只用过这种形式,SQL Server 2012中新增的功能Always On也可以实现。
快照发布
快照复制是完全按照数据和数据库对象出现时的状态来复制和分发它们的过程。快照复制不需要连续地监控数据变化,因为已发布数据的变化不被增量地传播到订阅服务器,而是周期性的被一次复制。
a.本地发布:要启动SQL Server代理
1.MyBookShop是主数据库,MyBookShop_R是被同步的数据库既辅数据库,现在可以看出主数据库比辅数据库多两条数据,现在我们把这两条数据通过发布快照的方式同步过去。
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175643272-42294043.png)
2.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175733897-1046872735.png)
3.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175747350-419715250.png)
4.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175803772-265254232.png)
5.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175813459-500379842.png)
6.可以在“计划在下时间运行快照代理”中设置运行时间,快照并非实时同步更新数据库,所以可以设置个时间,也可以不设置,只同步一次就行。
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175826272-1678356419.png)
7.点击安全设置
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175840865-1731288711.png)
8.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180041959-1675549163.png)
9.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180052803-87362409.png)
10.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180101459-114007797.png)
11.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180110490-221292811.png)
12.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180119412-471808583.png)
13.创建成功
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180132584-1196332548.png)
b.本地订阅
1.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180148147-529950360.png)
2.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180203037-1471493380.png)
3.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180211365-1140169492.png)
4.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180228147-1627561287.png)
5.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180245397-175845349.png)
6.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180256990-785036695.png)
7.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180305959-61654296.png)
8.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180314787-815078670.png)
9.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424180011225-1432492960.png)
10.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175959647-3724776.png)
11.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175949162-1359854185.png)
12.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175935850-989108480.png)
13.
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175926865-1662716255.png)
14.刷新显示订阅
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175909240-1772205276.png)
16.重新查询数据库,看看有没有同步过去
注:如果主数据库添加数据,辅数据库不会实时同步过去,除非重新启动代理或者到了作业执行的时间才会再次同步,如果想要数据实时同步[说是实时也会有几秒延迟,没有绝对的实时同步]到辅数据库就用事物发布而非快照发布
![](https://images2015.cnblogs.com/blog/455634/201704/455634-20170424175859928-1374793523.png)
事务发布
事务发布的方法和快照发布基本相同,事务发布可以实时更新数据,当添加、修改或者删除一条数据时,主数据库上的变动会实时同步到辅数据库【有几秒延迟】;
事务发布可以实现读写分离,主库发布事务,多台辅库订阅,辅库要设置成只读模式;