首页 > 代码库 > Sql Server 2008 R2数据库之复制同步数据

Sql Server 2008 R2数据库之复制同步数据

  对于数据库的复制功能一直也没有用过,正好这次需要做数据库之间的数据同步,就把数据库复制同步整理了一下。数据库同步可以是同一个服务器之间不同数据库之间数据同步,也可以是局域网内不同服务器间数据库的同步。因为这次做的就是局域网内两台服务器上数据库间数据的同步,对于不是在同一局域网内的两台或多台服务器数据库同步是否可以实现,暂时没有做测试,也没有深入的了解,所以也不知道是否可以实现了。有不到之处望多多指教。

  下面具体说一下步骤,首先我们说一下发布服务器上的准备工作和条件,先把Sql Server代理设置为自启动;对事务发布,确保数据库表要有主键;新建一个文件夹,设置为共享。

  首先我们设置一下配置分发,如果之前做过配置分发设置,就是右边的效果,可以直接创建本地发布。

  

  接着,一直下一步即可,在快照文件夹出注意一下

   

  下一步,如果一开始没有设置Sql Server代理为自启动,就会提示这个

  

  下一步,这个地方填写一开始创建好的共享文件夹地址,如F:\ShareFolder

  

  下一步,默认填写

    

  下一步,勾选配置分发

    

  点完成,可以看到:

    

  至此配置分发已经好了,接着就是创建本地发布了,

  

  下一步选择要同步的数据库

    

 

  这个地方选择事务发布,具体的每个发布可以看说明,后面也会讲到

  

  下一步,如果你的数据库中有视图等,也会显示出来,勾选你要同步的对象

  

  下一步,添加筛选项,如果需要就添加,不需要直接下一步,添加的界面右图

   

 

  这里不做添加,下一步,勾选第一项

  

  下一步,点安全设置,如下设置:

    

  确定后如下:

  

  下一步,勾选创建发布,下一步,填写一个发布名称

  

  点完成

  

  至此本地发布就创建好了,这时再展开复制-本地发布可以看到刚刚创建好的本地发布test

  

  创建好了本地发布就要创建订阅了,为了方便就在本机做订阅,如果在其他服务器上做订阅流程是一样的只是在选择发布服务器时有点区别,下面会讲到

  

  同样下一步,如果这地方是在本机订阅,则直接选择数据库和发布test,如果是订阅其他服务器上的发布,可以展开发布服务器,选择“查找sql server 发布服务器”

  

  这个时候会弹出数据库登录界面,这里需要注意一下,服务器登录要用计算机名称,不能用IP地址或别名,还要注意,这个地方要链接发布服务器,因为确保发布服务器上数据库允许远程链接。链接上之后会在刚才的界面展示这个服务器上的发布,选择好发布,下一步即可,勾选第一项。

   

  下一步,勾选上订阅服务器,选择订阅数据库,只要选择新建数据库就可以了。这时会弹出创建数据库对话框,创建一个数据库,

  

  下一步,设置安全性

  

  确定,下一步,同步计划选连续运行,初始化时间选择立即

  

  下一步,选择立即创建订阅,一直下一步即可,至完成。这个时候展开复制下的本地发布和本地订阅,可以看到发布和订阅都存在了。而且刚才创建的订阅数据库TestDataDY在数据库中也存在了。

        

  所有的工作都已经做好了,下面就是测试了。因为我们是把TestData作为发布的数据库,TestDataDY是订阅的数据库,因此我们在TestData数据库的表中添加或修改数据库,看TestDataDY数据库中的数据是否也跟着响应的改变。测试的过程可以自己手动的做一下。

  接下来我们说一下其他的东西,第一个就是一开始我们创建的共享文件夹,他叫快照文件夹,顾名思义就是用来存放快照的。我们可以找到这个文件夹并打开看一下,一开始是空的文件夹,当我创建了发布和订阅以后,在此打开可以看到,有四个以发布的数据库命名的文件。这些就是数据库TestData中的表的初始架构和数据。

  

  回顾上面创建订阅的时候创建的订阅数据库,我们只是创建了数据库,而数据库中的表、字段等我们没有创建,当我们创建好订阅以后,这些表和字段都自动的创建好了,就是通过快照文件夹中的初始架构和数据来完成的。

  还有一个就是分发数据库distribution,他是可以找到的,他存在系统数据库中。

  

  可以看到这个数据就一张表和一个字段,这个数据库主要的作用是用来存储历史记录、错误和新事务。

  接着就是发布类型了,发布类型有快照发布,事务发布,具有可更新订阅的事务发布和合并发布。

  快照发布:发布服务器按照预定的时间间隔向订阅服务器发送已发布数据的快照。他的工作机制是:发布服务器,将要发布的数据库整个做一个快照;订阅服务器的快照代理程序把发布服务器的快照读取过来,放在本地的快照文件夹内;订阅服务器的发布代理程序把快照文件夹中的快照发布到订阅服务器上。历史记录和快照记录在分发服务器中。

  事物发布:在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。他的基本原理:初始数据和架构(通过快照复制来完成),从这里可以体现出来快照复制,是所有复制的基础 。快照复制在订阅服务器上建立了订阅数据库;发布服务器的数据修改后,写事务日志;分发服务器的日志读取代理读取发生改变的数据的事务日志,把这些事务日志保存在发布服务器的发布数据库中;分发服务器的分发代理程序 将分发数据库中的事务日志分发到各个订阅服务器上,然后把历史记录和错误记录在分发数据库中。

  具有可更新订阅的事务发布: SQL Server 订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。来自订阅服务器的事务被应用于发布服务器。

  合并发布:在订阅服务器收到已发布数据的初始快照后,发布服务器和订阅服务器可以独立更新已发布数据。更改会定期合并。Microsoft SQL Server Compact Edition 只能订阅合并发布。

  这几个发布的区别是:

  1、快照发布和事务发布是单向的,即A->B;合并发布是双向的,A->B,B->A。

  2、快照复制是复制所有的数据,而事务复制和合并复制是复制数据的更改。

  以上就是复制的整个流程了,不过这个只是简单是数据同步,实际的项目中可以根据需求来选择发布类型以及配置。以上有不到之处望多多指教。

Sql Server 2008 R2数据库之复制同步数据