因为业务需要,我们需要将分别在全省各地的数据库同步到省中心数据库中,于是决定采用SQL Server2008自带的事物发布机制来完成此功能,具体步骤如下:
(此过程为摸索出来的,如果错误部分还望各位看官指教!)
1:准备工作
Windows server 2008 3台,
基本配置如下:
服务器 | 机器名 | IP地址 | OS账号 | OS密码 | SQL账号 | SQL密码 |
S1 | WS8-01 | 192.168.0.91 | administrator | S1-123456 | sa | 123456 |
S2 | WS8-02 | 192.168.0.92 | administrator | S2-123456 | sa | 123456 |
S3 | UK-AC5C33D86288 | 192.168.0.12 | administrator | S3-123456 | sa | 123456 |
本配置完成后的结果为:将S1,S2的数据更新到S3中
如下图所示
分别在3台服务器上安装同版本的SQL Server服务器,同时将需要同步的数据库分别在3台服务器上完成安装,保证需要同步的数据库在3台服务器上具有相同的架构。
2:详细步骤
2.1: 分别在S1,S2上创建事务发布。过程如下:
在上图中,因为我们仅仅需要同步数据,架构不会更改,所以仅选择了表,如果需要同步部分表,则可以点击“+”选择具体的表
由于我们是针对所有数据,所以此处直接默认设置下一步,如果需要针对表中的部分数据发布则可以点击添加按钮,设置相关查询条件
由于为了避免本次发布覆盖掉其他发布源的数据,此处对勾均不选择,点击下一步
点击“安全设置”
在快照代理安全性中选择“在一下windows账户下运行”,此处的账户信息为本发布服务器的账号密码
在连接到发布服务器中选择“使用以下SQL Server登录名”,此处的账户信息为本发布服务器的数据库用户名和密码
在此处输入发布名称,其中V2仅为数据库版本代码,S1表示为服务器Server 1,PUB仅表示发布;点击完成。
完成后点击“关闭”。
采用同样的方法完成对Server 2的配置
完成S1和S2中的发布创建后,回到S3中对数据进行订阅
上图中点击“新建订阅”
选择“<查找SQL Server发布服务器>”
输入S1的连接信息,点击“连接”
选择可用发布,点击下一步
此处选择“在分发服务器上运行所有的代理(推送订阅)”
点击订阅服务器代理后面的”….”按钮,设置分发代理安全性
由于是在发布服务器上运行代理,所以选择“在以下Windows账户下运行”,并且输入S1的账号和密码
在连接到订阅服务器中选择“使用以下SQL Server登陆名”,并且输入S3(订阅服务器)的SQL 账号和密码,点击确定
在上图中,将“初始化”去掉,避免覆盖其他订阅的数据
点击完成
点击关闭完成S3对S1的订阅创建
此时刷新“本地订阅”节点会看到多出了一个订阅
为了验证是否成功,此时在S1中插入数据,查看S3中是否有数据
验证S3(查询S3中的数据)
可以看到数据已近同步到了S3中,此外还可以测试编辑和删除数据,查看是否正常同步
S1中更新后S3的数据:
验证完成后,我们在按照同样的步骤在S3中创建对S2的订阅
查看“本地订阅”节点,看是否多出一个订阅
此时在S2中插入数据,验证S3中数据是否正确(应该包含S2和S1中的所有数据)
S3中的结果
我们将S1中的某一条数据删除,验证S3对S1的订阅是否仍然有效
S3: