SQL Server 复制 订阅与发布
接触 SQL Server 很长时间了,做了很多项目,但是对sql Server的订阅和发布知之不多,现在把订阅与发布的相关知识总结起来,以供大家拍砖。以下内容参考webcast
SQL Server 的复制技术 包括 订阅和发布
复制的组成部分:发布服务器(出版社),分发服务器(邮局),订阅服务器(读者,接受者)
发布服务器的作用:维护源数据库,由这些数据库出版的数据能够为复制所利用,检测并将所有出版数据的更改发送到分发服务器
分发服务器的作用:分发服务器包括分发数据库,并且存储元数据、历史数据和事务。根据所实施复制类型的不同,分发服务器所扮演的角色也各异,一般情况下与合并复制相比较,分发服务器对于快照复制和事务复制的角色更重要。
订阅服务器的作用:保持数据的副本,并接收对所修改出版的更改。取决于所实现的复制选项,可能还允许更新者更新数据,并将其复制回服务器或者其它订阅者。
复制的模式:推模式(Push),拉模式(Pull) 区别:分发代理程序在分发服务器上运行,即为推模式,在订阅服务器运行,即为拉模式。
复制的类型:快照复制,事务复制、合并复制。允许订阅更新的快照复制。允许订阅更新的事务复制。
详细分类:带立即更新的快照复制,带立即更新的事务复制,这两种都是采用的分布式的事务处理原理。快照复制是事务复制的基础,快照复制传输的包括表结构等信息。在订阅服务器上创建,然后是分发代理程序,传输数据。
出版物:发布服务器发布的一个整体。一个出版物能够包括一个或多个文章,文章可以是数据或数据库对象。因为出版中的所有文章能能够在相同时刻保持同步。出版物是订阅的基础,对出版物的订阅包括出版物中的所有文章,每个用户数据库中能够构创建一个或多个出版物。
文章:出版物的一部分,表或数据库的对象(存储过程、视图、用户自定义函数)的全部或者部分筛选分区数据。
复制代理:快照代理(snapshot agent) 分布式代理(Distribution agent) 日志读代理(log Reader agent) 合并代理(Merge agent) 队列读代理(Queue Reader Agent)
快照复制的工作机制:
1、发布服务器,将要发布的数据库整个做一个快照,
2、订阅服务器的快照代理程序把发布服务器的快照读取过来,放在本地的快照文件夹内
3、订阅服务器的发布代理程序把快照文件夹中的快照发布到订阅服务器上。历史记录和快照记录在分发服务器中。
事务复制的基本原理:
1、初始数据和架构(通过快照复制来完成),从这里可以体现出来快照复制,是所有复制的基础 。快照复制在订阅服务器上建立了订阅数据库。
2、发布服务器的数据修改后,写事务日志,
3、分发服务器的日志读取代理读取发生改变的数据的事务日志,把这些事务日志保存在发布服务器的发布数据库中。
4、分发服务器的分发代理程序 将分发数据库中的事务日志分发到各个订阅服务器上,然后把历史记录和错误记录在分发数据库中。