一:【准备条件】
<1>软件准备条件
机器A端:SqlServer2005 Management Studio + WinServer 2003 Enterprise (作为发布服务器)
机器B端:Sqlserver2005 Management Studio Express + WinXP(作为订阅服务器)
(可以用别的,不过订阅服务器版本不得高于发布服务器版本)
<2>复制准备条件
1. 所有被同步的数据表尽量要用主键,如果没有主键也没有关系,SqlServer会提示为表自动生成主键,如图
2. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。
3. SQLSERVER必需启动代理服务,且代理服务必须以本地计算机的帐号运行。 不得使用IP地址以及别名进行注册,比如LOCAL, “.”以及LOCALHOST等。
如果非同一网段或者远程服务器,或者只能用IP,不能用计算机名的,为对方注册服务器别名。将其对应关系加到本地系统网络配置文件中。文件的具体位置在C:\Windows\system32\drivers\etc\hosts
配置方式: 用记事本打开hosts文件,在文件的最下方添加IP地址和主机名的对应关系。如图:
4.SqlServer 必需启动代理服务,且代理服务必需以本地计算机的帐号运行。
5.发布服务器和订阅服务器都要设置MSDTC ,允许网络访问控制面板--->管理工具--->组件服务--->计算机--->我的电脑(Win7继续找 -->Distributed Transaction Coordinator--->本地DTC),右键属性,找到MSDTC选项卡,点击安全设置,按如下设置即可
)
确定,重启MSDTC服务。
二:准备工作的详细操作步骤
1、在发布服务器上,新建一个共享目录,作为发布的快照文件的存放目录,为共享目录添加EveryOne的完全控制权限。
2、确定发布服务器上用来发布的数据库和订阅服务器的用来订阅的数据库结构要保持一致,或者订阅服务器新建一个空数据库(不创建表)。
3、将发布端和订阅端的数据库所有者均设置为sa。
4、启动SQL代理(SQLSERVERAGENT)服务。
5、开启SQL Server 2005的网络协议TCP/IP和管道命名协议并重启网络服务。
6、设置SQL SERVER 身份验证为混合验证SQL Server和WINDOWS(发布、订阅服务器均设置)
7、发布服务器和订阅服务器互相注册
步骤如下:视图---à单击已注册服务器---à右击 数据库引擎---à新建服务器注册----à填写要注册的远程服务器名称----à身份验证选“SQL Server验证“----à用户名(sa) 密码,对于只能用IP,不能用计算机名的,为其注册服务器别名,见上。
准备工作完成,接下来我们进行发布和订阅的操作
二、【发布和订阅】
一:发布
(1)首先我们在发布服务器上(winserver2003)打开SqlServer2005 Management Studio (企业版)。在“对象资源管理器”中找到复制节点,右键--->新建发布(注:如果你的SqlServer是express版本的话,是没有发布这一功能的,只有订阅功能!)
(2)接下来选择要发布的数据库,下一步,选择“发布类型”,我这里选择“合并发布”
(3)下一步,选择订阅服务器类型,选择“SqlServer2005”,下一步,选择发布项目,我们选择表、视图、存储过程等。
(4)如果你的表没有主键,SqlServer会提示你,为没有主键的表自动添加主键。
(5)接下来设置作业计划,为了方便看到测试效果,我们设置“每隔一分钟”执行一次作业。
(6)设置快照代理安全性,连接到发布服务器时,用模拟进程即可。
(7) 为发布起个名字,完成发布
二:订阅
接下来,我们配置订阅服务器。订阅服务器是winxp系统,SqlServer版本为SqlServer 2005 Manager Studio Express ,只支持订阅。
(1)同发布,新建订阅
(2)选择发布服务器,找到我们刚刚新建的发布“Test3Copy” ,下一步
(3)选择运行代理的位置,根据需求选择是“推送”还是“请求”!
(4)接下来同发布类似,这里就不赘述了,订阅执行成功,在订阅数据库和发布数据库的表中都会多出一个字段来,SqlServer自动生成的!标志订阅成功。
三、【查看同步状态】
查看同步状态,只能在发布服务器上查看。具体操作步骤:(下列图中的发布跟上面提到的不是同一个发布)
(1)打开“复制”——>右键发布名称——>“启用复制监视器”
(2)展开“我的发布服务器”——>发布服务器机器名称-——>发布名称。在右侧会看到订阅服务器的状态“正在同步”。右键,选择“属性”可以打开详细说明。
(3)打开属性后,会弹出同步历史记录的对话框。这里有插入、更新、删除等操作的记录。
当然这篇文章里还有许多细节可能说的不那么清楚,难免也会出现一些问题,我会在随后的下篇博客中写一下遇到的问题及解决方案。大家有什么问题,欢迎相互交流