sql server的复制和订阅

本文介绍了如何使用SQL Server的复制功能解决数据同步问题。通过快照复制,从出版服务器到订阅服务器的数据同步过程包括配置出版服务器、创建出版物、设计订阅等步骤。在配置过程中涉及到了分发服务器、出版物、文章等概念,并提供了详细的操作指南。

      最近遇到一个项目,客户在总部录入信息后,数据需要同步到下属的若干个子系统中。现在总部单独使用一个数据库,下属单位各自使用自己的数据库。

      对于这个问题,想到了几个解决方案:

     1、自己写代码解决。定义好访问每个数据的连接字符串,总部添加数据时,同时写入其他所有数据,修改,删除的也同时进行。这个方法有一个优点两个缺点:

      优点:思路简单,做起来也不难;

      缺点:a、数据完整性和有效性不好保障;

               b、代码繁琐,工作量大;

     2、使用数据库本身的复制功能。以前没有用过这个功能,在网上查了查资料,用了两天时间,对这个东西有了初步的了解。以下转载邹大哥,以便将来查阅:

        复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。

 

      SQL复制的基本元素包括  
      出版服务器:数据源所在的服务器。犹如图书出版社;

      订阅服务器:需要同步数据的服务器,犹如图书订阅者,图书馆,书店等;

      分发服务器:把数据从数据源复制到目标数据库的服务器,犹如邮局,快递公司;

      出版物:要复制的数据的集合,犹如某批图书;

      文章  :要复制的数据项目,犹如某套图书;


       SQL复制的工作原理  
       SQL   SERVER   主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器 。

 

      SQL   SERVER复制技术类型  
      SQL   SERVER提供了三种复制技术,分别是:  
     1、快照复制(呆会我们就使用这个)  
     2、事务复制  
     3、合并复制

 

      第一步 来配置出版服务器  
      (1)选中指定[服务器]节点;  
      (2)从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]命令;  
      (3)系统弹出一个对话框点[下一步]然后看着提示一直操作到完成;   
      (4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器。同时也生成一个分发数据库(distribution) 。

 

      第二步 创建出版物  
      (1)选中指定的服务器;  
      (2)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令。此时系统会弹出一个对话框;  
      (3)选择要创建出版物的数据库,然后单击[创建发布] ; 
      (4)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助) ;   
      (5)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如   ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行"SQL   SERVER   2000"的数据库服务器 ; 
      (6)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表  ; 
      (7)然后[下一步]直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。 

 

      第三步 设计订阅  
      (1)选中指定的订阅服务器;  
      (2)从[工具]下拉菜单中选择[复制]子菜单的[请求订阅];  
      (3)按照单击[下一步]操作直到系统会提示检查SQL   SERVER代理服务的运行状态,执行复制操作的前提条件是SQL   SERVER代理服务必须已经启动。  
      (4)单击[完成]。完成订阅操作。

   
       完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。

       展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态,然后点立即运行代理程序,接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。

        接下来就是判断复制是否成功了打开C:/Program   Files/Microsoft   SQL Server/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表 。

 

 

=================================================================================

一   配置发布服务器  
   
  在发布服务器上执行以下步骤:  
   
  (1)   从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导    
  (2)   [下一步]   选择分发服务器   可以选择把发布服务器自己作为分发服务器或者其他sql的服务器  
  (3)   [下一步]   设置快照文件夹    
          一般采用默认//servername/d$/Program   Files/Microsoft   SQL   Server/MSSQL/ReplData  
  **(4)   [下一步]   自定义配置    
        可以选择:  
        是,让我设置分发数据库属性启用发布服务器或设置发布设置  
        否,使用下列默认设置  
   
        建议采用自定义设置  
  (5)   [下一步]   设置分发数据库名称和位置   采用默认值  
  (6)   [下一步]   启用发布服务器   选择作为发布的服务器  
  (7)   [下一步]   选择需要发布的数据库和发布类型  
  (8)   [下一步]   选择注册订阅服务器  
  (9)   [下一步]   完成配置  

 

 

   二   创建出版物  
   
  发布服务器上  
  (1)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令  
  (2)选择要创建出版物的数据库,然后单击[创建发布]  
  (3)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。  
  对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)  
     
  (4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,  
  SQLSERVER允许在不同的数据库如   ORACLE或ACCESS之间进行数据复制。  
  但是在这里我们选择运行"SQL   SERVER   2000"的数据库服务器  
   
  (5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表  
   
  注意:   如果前面选择了事务发布   则再这一步中只能选择带有主键的表  
   
   
  (6)选择发布名称和描述  
   
  **(7)自定义发布属性      
   
  向导提供的选择:  
  是   我将自定义数据筛选,启用匿名订阅和或其他自定义属性  
  否   根据指定方式创建发布    
   
  建议采用自定义的方式  
   
  (8)[下一步]   选择筛选发布的方式    
  (9)[下一步]   可以选择是否允许匿名订阅  
   
  1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器  
  方法:   [工具]->[复制]->[配置发布、订阅服务器和分发的属性]->[订阅服务器]   中添加  
   
  否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅  
  如果仍然需要匿名订阅则用以下解决办法    
  [企业管理器]->[复制]->[发布内容]->[属性]->[订阅选项]   选择允许匿名请求订阅  
   
  2)如果选择匿名订阅,则配置订阅服务器时不会出现以上提示  
   
   
  (10)[下一步]   设置快照   代理程序调度  
  (11)[下一步]   完成配置  
   
   
  当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。  

 

  三   订阅服务器的配置  
   
   
  (一)   强制订阅的配置  
  在发布服务器上  
  [企业管理器]->[复制]->[发布内容]->[属性]->[订阅]->[强制新建]  
  然后出现强制订阅向导    
  选择订阅服务器->订阅数据库名->设置分发代理程序调度->初始化订阅->启动要求的服务  
  (发布服务器的agent要启动)->完成即可    
   
  (二)   请求订阅的配置  
   
  订阅服务器上执行以下操作  
   
  (1)   从[工具]下拉菜单中选择[复制]子菜单的[请求订阅]  
  (2)   选择[请求新订阅]   打开请求订阅向导  
  (3)   [下一步]选择已注册的发布  
  (4)   [下一步]选择创建订阅的数据库  
  (5)   [下一步]选择匿名订阅或署名订阅  
  (6)   [下一步]   初始化订阅   选择初始化架构和数据  
  (7)   [下一步]选择快照文件的存放位置   一般采用发布服务器的默认快照文件夹  
  **(8)   [下一步]设置分发代理程序调度   可以选择订阅更新内容的间隔  
  (9)   [下一步]系统会提示检查发布服务器的代理服务的运行状态  
  (10)   [下一步]   完成配置  

 

 

发布订阅  
   
  1.作发出版,分发服务器,必须要启动   SQLServerAgent服务  
  订阅服务器可以不用启动   SQLServerAgent服务.  
   
  2.在进行操作之前,必须在出版分发服务器这边注册订阅服务器,两边最好建有相同结构的数据库  
  3.从菜单中选Tools>>Republication>>Configure   Publishing   And   SubScripter   ,接着进行配置,Configure   Publishing   ,Subscirpter   And   Distribution...配置要分发的数据库及其表,视图等  
   
  4.创建分发管理   Create   And   Manager   Publication,选择要分发的数据库  
   
  5.接上在此基础上或Push   Subscriptions   to   other,选取分发数据库下的出版物,再按右边的按钮:Push   New   Subscription,逐步按向导完成  
   
  启动代理的域用户账号必须具有读取发布-分发服务器目录的权限  
  你用的账号没有读取//ServerA/D$/Program   Files/Microsoft   SQL         Server/MSSQL/repldata/unc/这个目录下的文件的权限。  

 

        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值