SQL SERVER 2012 使用订阅发布同步数据库

    软件做大了,客户就多了,一个数据库服务器是远远不够的,当有一台数据服务器卦掉,那整个系统就会崩溃,所以必须考虑到数据库的自动同步与备份,当一台数据库服务
器宕机,自然就有用一台数据服务器启动起来保证整个软件系统的可用性。备份数据库与总数据库之间既统一又独立。这就是业务,技术服务于业务,那么摆在我们面前的问题是
如何让数据既统一又独立?其实SQLServer已经为我们提供了很好的解决方案:发布、订阅。
	打开SQL Server2012的对象资源管理器我们可以看到里面有一个”复制“节点。(图1)
 
 
先来简单了解下复制的概念:
    复制是将数据或数据库对象从一个数据库复制和分发到另外一个数据库,并进行数据同步,从而使源数据库和目标数据库保持一致。使用复制,可以在局域网和广域网、
拨号连接、无线连接和Internet上将数据分发到不同位置以及分发给远程或移动用户。
    复制由发布服务器、分发服务器、订阅服服务器组成:
  1. 发布服务器:数据的来源服务器,维护源数据,决定哪些数据将被分发,检测哪些数据发生了修改,并将这些信息提交给分发服务器。
  2. 分发服务器:分发服务器负责把从发布服务器拿来的数据传送至订阅服务器。
  3. 订阅服务器:订阅服务器就是发布服务器数据的副本,接收维护数据。
点开复制节点我们看到其下面的两个自节点:“本地发布”、“本地订阅”(图2)
举个经典的例子解释下发布、订阅:
    发布服务器类似于报社,报社提供报刊的内容并印刷,是数据源;分发服务器相当于邮局,他将各报社的报刊送(分发)到订户手中;订阅服务器相当于订户,从邮局那
里收到报刊。
    发布服务器通过复制向其他位置提供数据,分发服务器起着存储区的作用,用于复制与一个或多个发布服务器相关联的特定数据。每个发布服务器都与分发服务器上的单
个数据库(称作分发数据库)相关联。分发数据库存储复制状态数据和有关发布的元数据,并且在某些情况下为从发布服务器向订阅服务器移动的数据起着排队的作用。在很
多情况下,一个数据库服务器实例充当发布服务器和分发服务器两个角色。这称为“本地分发服务器”。订阅服务器是接收复制数据的数据库实例。一个订阅服务器可以从多
个发布服务器接收数据。
	好了先消化一下理论,下面我们创建一个发布服务器:
	在“本地发布”节点上右击->新建发布由于我没有安装复制组件所以出了点儿意外(图3)

重新运行SQL Server2012安装向导,选择SQL Server复制功能(图4)

下一步->下一步->直到完成。

这次再点击“新建发布”,界面不一样了(图5)

点击下一步(图6)

我们先实验一下“本地分发服务器”模式直接点击下一步,由于我之前没有启动SQL Server代理所以又出了点儿小意外(图7)

微软已经解释的很清楚了,直接点击下一步(图8)


到了这一步是不是感到有些迷惑?好了我们先消化几个概念:

推订阅:推订阅是指由发布服务器将所有发生修改过的数据复制给订阅者,推荐使用推订阅。
  	拉订阅:拉订阅是指订阅服务器在经过一段时间就会向发布服务器要求复制出版数据库发生的变化的数据。
  	发布,分发,订阅可以部署在独立的服务器上面也可以部署在一台sql server 上面,分开部署可以提高性能。

点击下一步,键入数据库发布向导(选择要发布的数据库)(图9)



点击“下一步” 如图10



微软的发布类型说明似乎不太好理解:

(1)快照发布
  快照发布指在某一时刻给出版数据库中的出版数据照相,然后将数据复制到订阅者服务器。快照复制实现较为简单,其所复制的只是某一时刻数据库的瞬间数据,快照

复制是将整个出版物传送给订阅者,就是在某一时刻将出版数据进行一次“照相”,生成一个描述出版数据库中数据的当前状态的一个文件,然后在相应的时间将其复制到

订阅的数据库上,快照复制并不是不停的监视出版数据库中发生的变化情况,它是对出版数据库进行一次扫描,把所有出版数据中的数据从源数据库送至目标数据库,而不

仅仅是变化的数据。如果数据量很大,那么要复制的数据就很多。因此对网络资源要求很高,不仅要有较快的传输速度,而且要保证传输的可靠性。快照复制是最为简单的

一种复制类型,能够在出版者和订阅者之间保证数据的一致性。快照复制通常使用在以下场合:在一定时间内出现大量的更改的操作,但数据总量不大,变化周期较长。

(2)事务发布
   快照发布是将整个数据集发送给订阅服务器,由于体积大而造成复制周期较长,会形成复制滞后问题。那么事务复制使用事务日志来生成将复制到订阅服务器的事务,

因为它只复制事务也就是变化,所以滞后也比快照复制低得多。

(3)合并发布  
    合并发布是为移动用户设计的,可以在发布服务器或是订阅服务器处执行修改,在合并代理运行时,这些修改将同步,多用于发布服务器与订阅服务都修改数据的情况下。

工作原理如下:在要复制的每个表上实现触发器,并使用包含GUID列唯一标识要复制的表中的每一行。对其中的任何一个表进行修改时,都会将更改记录到一个数据表中,在

合并代理运行时,它收集数据表中的GUID,这些GUID指出了在发布服务器和订阅服务器处修改过的行。对于只在发布服务器或是订阅端修改的数据则直接进行相应操作,如

INSERT,UPDATE,DELETE,如果双方都有GUID则按照用户指定的方式解决冲突,默认发布服务器优先。

我们先选择最简单的发布模式(快照发布),点击下一步,由于我没有在Publish数据库中建立任何数据表所以又出了点儿意外(图11)

建立UserList数据表(图12)

继续我们的发布之旅(图13)

要发布的对象已经划分的很详细了,从数据表到数据表的每一个字段,项目属性也非常详细(图14)

点击下一步,查看右上角的“添加”按钮,还有更加令人惊喜的筛选器(图15)

微软做事总是很成熟,我们能想到的他都想到了。点击下一步(图16)


快照代理,它生成架构,数据以及跟踪复制过程所需的数据;

欣赏一下快照代理的核心界面(图17,图18)


设置账户(图19)

点击下一步(图20)

为发布起个名字吧(图21)

总算可以点完成了,大功告成(图22)

 
时间: 2024-10-13 01:49:43

SQL SERVER 2012 使用订阅发布同步数据库的相关文章

SQL Server 2012笔记分享-54:数据库文件管理1

(一)添加文件 可以在线执行,不影响数据库使用 ,如图. 添加完成后,如图所示. 也可以通过脚本的形式来添加,如图. (二)删除文件 可以在线执行,不影响数据库使用 . 只有当文件中的实际使用空间为空时才能被成功执行 . (三)移动文件到不同的磁盘路径下 必须先将数据库脱机,将导致数据库暂时不可用 详情参考:http://msdn.microsoft.com/zh-cn/library/ms345483.aspx 若要将移动数据或日志文件作为计划的重定位的一部分,请执行下列步骤: 1. 运行以下

SQL Server 2012笔记分享-41:数据库整合建议

数据库整合的原则 如果有多台SQL,并且当前每台SQL的资源利用普遍不高,我们可以针对这些SQL进行整合. ========================================================= 整合方式     1)采用单个服务器多个实例部署.一个实例是一个资源使用和权限控制的边界,安全的边界:如果对权限要求比较高,独立性比较高,则可以考虑这种方式: 2)多个系统的数据库放在一个服务器的一个实例里面,这种方式管理简单:如果同一个业务组的安全管理界限比较模糊,这可以采

在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库

http://www.cnblogs.com/huangtailang/p/4221164.html 背景:个人电脑中使用的是VS2012,数据库为2008R2,最近需要打开一个SqlServer2012的数据库 如果在本机安装一个2012的数据库可能比较浪费时间,本来是想在如万网等服务商那边购买一个2012的数据库来使用的,但发现目前的服务商最高提供的数据库为2008R2 既然不想安装新的数据库版本那就只能在现在的环境中想办法了,还好在VS2012中提供了一个本地的数据库引擎于是尝试通过201

SQL SERVER 使用订阅发布同步数据库(转)

一.数据库复制涉及  1.发布服务器:  数据的来源服务器,维护源数据,决定哪些数据将被分发,检测哪些数据发生了修改,并将这些信息提交给分发服务器.  2.分发服务器: 分发服务器负责把从发布服务器拿来的数据传送至订阅服务器. 3.订阅服务器:         订阅服务器就是发布服务器数据的副本,接收维护数据. 4.订阅类型       推订阅          推订阅是指由发布服务器将所有发生修改过的数据复制给订阅者,这种在数据同步性价比较高的场合,推荐使用推订阅.       拉订阅    

Sql Server 2012 Local DB发布到服务器端后无法访问

项目背景 基于Windows认证的Web application, 通过Visual Studio 2013创建的LocalDB位于App_Data目录下 现象 本地调试没有任何问题.发布到服务器(Windows Server 2008R2, IIS7.5)后,在浏览器访问抛出异常 A network-related or instance-specific error occurred while establishing a connection to SQL Server. The ser

SQL Server 2012 Express LocalDB

微软最新推出的 SQL Server 2012 Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio 2012 之中. 关于 SQL Server 2012 Express LocalDB 的运作方式 在安装 LocalDB 时会复制一个 SQL Server Express 实例所需的最少文件,基本上 LocalDB 几乎等同于完整的 SQL Server Express 数据库引擎,且 Loc

SQL Server 2012 Express LocalDB 的作用

微软最新推出的 SQL Server 2012 Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio 2012 之中. 关于 SQL Server 2012 Express LocalDB 的运作方式 在安装 LocalDB 时会复制一个 SQL Server Express 实例所需的最少文件,基本上 LocalDB 几乎等同于完整的 SQL Server Express 数据库引擎,且 Loc

SQL Server 2012 自动增长列,值跳跃问题

介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(int),那么跳跃值为 1000:如果数据类型为 长整型(bigint),那么跳跃值为 10000.从我们的项目来看,这种跳跃问题是不能被接受的,尤其是展示在客户端的时候.这个奇怪的问题只在 SQL Server 2012 及更高的版本中存在,SQL Server 2012之前版本不存在此问题. 背景

sql server 本地复制订阅 实现数据库服务器 读写分离(转载)

转载地址:http://www.cnblogs.com/echosong/p/3603270.html 再前段echosong 写了一遍关于mysql 数据同步实现业务读写分离的文章,今天咱们来看下SQL Server的复制订阅实现数据的读写分离 比起mysql的复制,SQL server 复制相对强大 一. 名词解释 1.复制的 机构组成(类比报纸流通): 1).发布服务器(报社出版) 生产维护数据源,审阅所有出版数据的更改 发送给 分发服务器(邮局) 2).分发服务器 (邮局) 分发服务器包