UML软件工程组织

 

 

SQL Server 同步复制测试
 
作者: 卓维乾 来源: 卓维乾的博客
 

1.测试环境:

 操作系统 windows® Server 2003 sp1® ,两台,独立系统,不在一个信任域内(如果在同一信任域,权限操作就更简单了)。
 数据库:SQL Server 2000 SP4 企业版

 2.条件准备:

 1、安装好两台windows 2003 server 和Sql server 2000企业版的服务器。
 2、在两台windows 2003服务器添加windows 系统用户SqlCopy ,密码相同,属于administrators 组。
 3、在两台服务器的hosts文件中相互添加两条记录(参考“失败可能的问题”部分)。
 4、服务器名称及及相关配置

Windows 主机名 Sql server 建库 服务类型
Boco-server Test数据库(空) 订阅服务器
Boco2006 Test数据库(有数据) 发布服务器

5、在SQL server 上建立两个sql 用户:“fuzhi”,权限system administrators,具备管理发布的数据库的所有的权限(参看以下步骤)。

 3.配置发布、订阅服务步骤:

 1、进入服务器的服务内,找到“SQLSERVERAGENT的”服务,双击,在弹出的属性中,选“登录”在登录身份中输入在准备条件中建立的帐号和密码(本次用户名为“SqlCopy”),点“确定”,重启“SQLSERVERAGENT的”服务,使之生效。
 
 2、打开SQL Server 2000的企业管理器,对两台SQL  server进行注册,不要采用local 和ip地址来注册,采用windows 2003的主机名来注册。
 3、将需要发布的服务器(主服务器),展开sql serer 树,如下图,右点右边的空白处,在弹出的菜单中点“配置发布、订阅服务器和发布”
 
 4、启动向导,继续
 
 5、提示如下图,“boco2006”服务器是发布服务器,点“下一步”。
 
 6、出现如下图,按照缺省。
 
 7、选择发布数据放置点,默认也可。
 
 8、出现如下的提示,这说明我们在建立帐号的时候,需要管理员权限或者具有该目录的管理权限。
 
 9、默认配置继续。
 
 10、 发布配置完成。
 

 4.新建发布

 1、在两台服务器上建立SQL Server 用户,用于相互登录,不用SQL Server的sa用户,主要是sa用户存在安全和其他用户使用的情况,造成修改了sa密码而复制无法顺利进行。
 
 2、修改该用户的属性,设置该用户具有System Administrators 权限。
 
 3、修改该用户数据库访问权限
 
 4、在发布服务器上,展开目录树,点“发布内容”,在右边空白处有点,在弹出的菜单中,点“新建发布”。
 
 5、选择要发布的数据库,这里是“test”。
 
 6、选择“合并发布”,继续,这样主要是在备用数据库启用主数据库的时候,主数据成为备用数据库,系统正常使用。
 
 7、缺省继续即可。
 
 7、缺省继续即可。
 
 9、“项目问题”中,唯一标识中,提示如果不带列表的语
 
 句的Insert可能会失败,即类似“Insert? table values( a,’b’)”,会失败,“Insert? table (aa,bb) values( a,’b’)”成功。
 10、缺省继续即可。
 
 11、剩下步骤缺省继续即可。
 
 12、在配置好的发布属性中,选择“订阅”,点“强制新建【P】”。
 
 13选择订阅服务,这里订阅服务器为“BOCO-SERVER”。
 
 14、 数据,默认就可。
 
 15、 默认配置,继续即可,完成及订阅完毕,没有必要在订阅服务器上配置订阅,因为订阅已经在发布服务器上强制。
 

 5.完成订阅

 1、进行测试,在准备阶段,已经在订阅服务器上建立了test数据库,在没有复制同步是,可以看到“boco-server”服务器上没有user1 表。
 
 2、同步后,两个数据库一样。
 
 3、平时可以查看相关的日志,发布服务器上,展开发布数据库的树“代理服务器”->“合并代理程序”。
 

 6.失败可能的问题

 1、在同步过程中,出现“远程服务器不是内容订阅服务器”的问题,该问题有可能两个原因引起。
 A、 hosts 文件问题,在准备工作中,hosts文件中配置的IP地址和主机名,但是如果 SQL Server的实例名成为类似? “wwwserver\remote” 那么在 hosts文件中 的格式为192.168.1.2 wwwserver\remote ???#注意中间的“\” 然后在企业管理中以“wwwserver\remote”重新注册远程的服务器,重新配置复制即可。
 B、 修改了机器名等出现问题,可以按照以下的步骤解决。
 在查询分析器里执行:

use master
select srvid,srvname,datasource from sysservers???
如果没有srvid=0或者srvid=0(也就是本机器)但srvname和datasource不一样, 需要按如下方法修改(如果 本机的srvid必须是“0”,否则也必须执行如下脚本:
----------------------以下可以直接粘贴到 查询分析器 中--------------------------
USE master
GO
-- 设置两个变量
DECLARE @serverproperty_servername? varchar(100),? @servername??? varchar(100)
取得Windows NT 服务器和与指定的 SQL Server 实例关联的实例信息
SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
-- 返回运行 Microsoft SQL Server 的本地服务器名称
SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
-- 显示获取的这两个参数
select @serverproperty_servername,@servername
--如果@serverproperty_servername和@servername不同(因为你改过计算机名字),再运行下面的
--删除错误的服务器名
EXEC sp_dropserver @server=@servername
--添加正确的服务器名
EXEC sp_addserver @server=@serverproperty_servername, @local='local'
---------------------到此结束------------------------------------
修改这项参数,需要重新启动MSSQLserver和Sqlserveragent服务才能生效
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号