使用Sqlserver事务发布实现数据同步
2015-09-29 11:05
459 查看
这里要说明一下环境:首先我在本地局域网内有两台安装有sqlserver2008的机器(注意:已发布的快照版本无法向老版本数据库兼容,意味着2008下创建的事务或快照发布,无法被sqlserver2005订阅)。当然这两台机器要放在同一个网段,一方面出现性能和安全性考虑,另一方面是我目前还没有找到跨不同网段的快照应用方案(可行性的那种)。
好了,这里我以我们产品数据库为准来介绍一下如何通过发布订阅的方式来进行数据同步。
首先,在要发布的数据库上创建一个我们的产品数据库(这里叫做dnt_new),然后在该数据库实例的左侧导航的“复制”--“本地发布”上击右键,然后选择“新建发布”,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/6ec648f00e88bb4d20298d5916d0b08d.gif)
这样,系统就会启动‘发布向导’来引导大家,这里我们在欢迎界面下点击"下一步”,然后在当前窗口中选择要发布的数据库,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/f7ddff3ae3c79f73ccfe68a5e6ce8505.gif)
点击下一步,然后在接下来的窗口中选择“事务发布”,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/4d06e659e642821aa69c182d8092736e.gif)
然后点击下一步,选择要同步的数据对象(数据表,存储过程,自定义函数等),如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/4908cc1c7335b31a324a369da842200c.gif)
然后就是“项目问题窗口”,因为之前已用dbo身份登陆,所以这里只要点击下一步即可,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/97996976353239a839db5b568acd6be1.gif)
这里可以通过“添加”方式来过滤要同步的数据信息,因为要做全表数据同步,所以这里就不做设置了,感兴趣的朋友可以自己研究一下,这里接着点击下一步,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/292ec644ec75882ec576ad8b1208180f.gif)
然后在‘代理安全性’窗口中,点击“安全设置”按钮:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/26842871eb84f695538fe6ef36052d9f.gif)
在弹出的‘安全设置’子窗口中设置如下信息,并点击‘确定’按钮:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/c9bc4b50f64f80fc8355922c446984bf.gif)
然后点击下一步按钮:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/e5020253a21478b44875398dd997ef82.gif)
选择“创建发布”复选框,然后点击下一步,这时向导会让您输入“发布名称”,这里命名为“dnt_new_snap”:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/27ad757a54d6f5b8b6e8fec23fc51714.gif)
点击“完成按钮”,这里系统就开始根据之前收集的信息来创建该发布对象信息了,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/a0e29a243786fb4b5746ebb0c7c71340.gif)
到这里,‘创建发布’的工作就完成了。下面介绍一下创建订阅的流程。在另一个机器的sqlserver实例上,打开该实例并使用“复制”—“新建订阅”,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/52e820fa8e2e227923aceb3ed2b81d19.gif)
这时系统就会启动“新建订阅”向导,点击下一步,并在“发布”窗口中的“发布服务器”下拉框中选择“查打发布sqlserver服务器”项,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/0e6439666dc1e838f48bcc5da5a79590.gif)
然后在弹出窗口中选择之前‘创建发布时所使用的数据库实例’并进行验进登陆,这时,发布服务器的信息就会出现在下方的列表框中:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/2c5439e272ebf073df1f10a5160ffca3.gif)
选择之前我们创建的那个发布对象“dnt_new_snap”,接着点击下一步:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/10bc70d1d18e8f0a9831eb280e57ef1c.gif)
在分发代理位置窗口中,选择“在分布服务器上运行所有代理”,然后点击下一步,然后在“订阅服务器”窗口中的订阅数据库列表框中选择一下要同步的订阅数据库名称(可新建):
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/38c84de7a8a5975781700b99c6bffab0.gif)
点击下一步,然后在‘分发代理安全性’窗口中,点击列表框中的‘…’来设置安装性,并做如下设置(注意红框部分):
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/1e8b58d89683a5d1e65b93f3e9b156ee.gif)
然后点击“确定”按钮,之后在向导上点击“下一步”按钮,这时系统就会显示“代理计划执行方式”窗口,选择“连续运行”:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/cccabd71a3da16d1548e331c59c7f554.gif)
点击下一步,在窗口中选择“立即执行”:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/27e682f1dfcccaaf26e14a7b85ca8b21.gif)
完成了这一步,点击下一步按钮,然后就可以创建该订阅对象了,如果一切运行正常,sqlserver就会从‘发布服务器’那边,将之前指定的数据表和存储过程等同步到当前的‘订阅数据库’中了。
这时我们可以在源数据库(发布服务器)上的表中添加或修改指定表数据信息,在等待1-3秒之后,所做的添加和修改就会同步到‘订阅数据库’上的相应表中。看来目的是达到了,呵呵。
好了,今天的内容就到这里了。
注:本文中的两台机器必定是可以使用sqlserver客户端互联(在sqlserver studio中设置'允许远程链接',同时要设置相应的ip地址,以及在配置管理器中开启tcp/ip协议即可)
原文链接: http://www.cnblogs.com/daizhj/archive/2009/11/18/1605293.html
好了,这里我以我们产品数据库为准来介绍一下如何通过发布订阅的方式来进行数据同步。
首先,在要发布的数据库上创建一个我们的产品数据库(这里叫做dnt_new),然后在该数据库实例的左侧导航的“复制”--“本地发布”上击右键,然后选择“新建发布”,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/6ec648f00e88bb4d20298d5916d0b08d.gif)
这样,系统就会启动‘发布向导’来引导大家,这里我们在欢迎界面下点击"下一步”,然后在当前窗口中选择要发布的数据库,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/f7ddff3ae3c79f73ccfe68a5e6ce8505.gif)
点击下一步,然后在接下来的窗口中选择“事务发布”,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/4d06e659e642821aa69c182d8092736e.gif)
然后点击下一步,选择要同步的数据对象(数据表,存储过程,自定义函数等),如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/4908cc1c7335b31a324a369da842200c.gif)
然后就是“项目问题窗口”,因为之前已用dbo身份登陆,所以这里只要点击下一步即可,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/97996976353239a839db5b568acd6be1.gif)
这里可以通过“添加”方式来过滤要同步的数据信息,因为要做全表数据同步,所以这里就不做设置了,感兴趣的朋友可以自己研究一下,这里接着点击下一步,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/292ec644ec75882ec576ad8b1208180f.gif)
然后在‘代理安全性’窗口中,点击“安全设置”按钮:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/26842871eb84f695538fe6ef36052d9f.gif)
在弹出的‘安全设置’子窗口中设置如下信息,并点击‘确定’按钮:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/c9bc4b50f64f80fc8355922c446984bf.gif)
然后点击下一步按钮:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/e5020253a21478b44875398dd997ef82.gif)
选择“创建发布”复选框,然后点击下一步,这时向导会让您输入“发布名称”,这里命名为“dnt_new_snap”:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/27ad757a54d6f5b8b6e8fec23fc51714.gif)
点击“完成按钮”,这里系统就开始根据之前收集的信息来创建该发布对象信息了,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/a0e29a243786fb4b5746ebb0c7c71340.gif)
到这里,‘创建发布’的工作就完成了。下面介绍一下创建订阅的流程。在另一个机器的sqlserver实例上,打开该实例并使用“复制”—“新建订阅”,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/52e820fa8e2e227923aceb3ed2b81d19.gif)
这时系统就会启动“新建订阅”向导,点击下一步,并在“发布”窗口中的“发布服务器”下拉框中选择“查打发布sqlserver服务器”项,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/0e6439666dc1e838f48bcc5da5a79590.gif)
然后在弹出窗口中选择之前‘创建发布时所使用的数据库实例’并进行验进登陆,这时,发布服务器的信息就会出现在下方的列表框中:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/2c5439e272ebf073df1f10a5160ffca3.gif)
选择之前我们创建的那个发布对象“dnt_new_snap”,接着点击下一步:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/10bc70d1d18e8f0a9831eb280e57ef1c.gif)
在分发代理位置窗口中,选择“在分布服务器上运行所有代理”,然后点击下一步,然后在“订阅服务器”窗口中的订阅数据库列表框中选择一下要同步的订阅数据库名称(可新建):
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/38c84de7a8a5975781700b99c6bffab0.gif)
点击下一步,然后在‘分发代理安全性’窗口中,点击列表框中的‘…’来设置安装性,并做如下设置(注意红框部分):
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/1e8b58d89683a5d1e65b93f3e9b156ee.gif)
然后点击“确定”按钮,之后在向导上点击“下一步”按钮,这时系统就会显示“代理计划执行方式”窗口,选择“连续运行”:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/cccabd71a3da16d1548e331c59c7f554.gif)
点击下一步,在窗口中选择“立即执行”:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/27e682f1dfcccaaf26e14a7b85ca8b21.gif)
完成了这一步,点击下一步按钮,然后就可以创建该订阅对象了,如果一切运行正常,sqlserver就会从‘发布服务器’那边,将之前指定的数据表和存储过程等同步到当前的‘订阅数据库’中了。
这时我们可以在源数据库(发布服务器)上的表中添加或修改指定表数据信息,在等待1-3秒之后,所做的添加和修改就会同步到‘订阅数据库’上的相应表中。看来目的是达到了,呵呵。
好了,今天的内容就到这里了。
注:本文中的两台机器必定是可以使用sqlserver客户端互联(在sqlserver studio中设置'允许远程链接',同时要设置相应的ip地址,以及在配置管理器中开启tcp/ip协议即可)
原文链接: http://www.cnblogs.com/daizhj/archive/2009/11/18/1605293.html
相关文章推荐
- Mysql 主从复制-配置篇
- oracle之synonym小结
- MongoDB学习十四 --MongoDB的分片
- SQLAlchemy操作MariaDB笔记之四
- 使用SQL大全(技巧讲解)
- oracle 第01章 安装
- mysql 海量数据的存储和访问解决方案
- vsftp与mysql结合进行用户验证
- sql注入的问题,PreparedStatement
- JDBC数据库的连接基本知识点
- redis mac版服务优化
- SQLAlchemy操作MariaDB笔记之三
- MySQL中的锁(表锁、行锁)
- 从一个虚拟机移动数据库到另一个虚拟机
- 使用数据库定义资源、角色和权限
- Windows系统Mongodb安装教程
- oracle之sequence详解
- SqlBulkCopy 使用案例
- c#简单的注册程序,连接数据库
- MySQL中information_schema是什么