日期:2014-05-18  浏览次数:20483 次

请教关于sql 复制,订阅的问题
偶有些问题 望各位能帮忙看下. 

现有一主DB服务器A以及若干客户服务器(B,C,D等..) 

主服务器中有张表 A.Table 里面有若干字段。同时有一个索引字段 A.Table.ServerID 记录着这条记录来自于哪个客户服务器。 

所有客户服务器中Table表都有相同的表结构. 假设所有服务器使用SQL SERVER 2005 SP2 

现在问题 
1.希望所有客户服务器定期(比如30分钟) 向主服务器同步数据 并且是所有客户都同步到同一张表中去.(以ServerID来区别是哪个服务器的数据 但是客户端服务器的表中仍然只保有自己的数据) 这样应该用什么方法进行复制?? 

2.如果客户端或者服务器网络故障 如何让它在下一个可用周期内自动向主服务器更新数据? 

3.如果客户服务器中数据挂掉.希望从主服务器中获得仅该客户服务器所该获得的行.(select * from a.table where serverid = 客户端服务器的id) 应该使用什么方法?(Microsoft说要一个"Host_Name()" 不太明白这个怎么操作 在哪儿进行编程呢?) 

4.如果主服务器和客户服务器在一个更新周期内分别对数据进行了修改.那两边如何进行同步?(我希望是能按顺序更新,比如主服务器中和客户服务器中数值都是3000 主服务器先执行update 值 set 值 = 值 -100 然后在还没有进行同步的时候客户服务器执行update 值 set 值 = 值 +200 则同步后结果是3000-100+200 而不是以最后一次更新的值来覆盖.这样类型的同步是否需要某种编程?) 


------解决方案--------------------
没有遇到过
帮你UP
------解决方案--------------------
SQL code
下介绍实现复制的步骤。(以快照复制为例)   


准备工作: 

1.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作: 

我的电脑--D:\  新建一个目录,名为:  PUB 
--右键这个新建的目录 
--属性--共享 
--选择"共享该文件夹"(另外还可以通过"权限"按纽来设置具体的用户权限 
--确定 


2.设置SQL代理(SQLSERVERAGENT)服务的启动用户 

开始--程序--管理工具--服务 
--右键SQLSERVERAGENT 
--属性--登陆--选择"此账户" 
--输入".\Administrator",或者选择其他系统管理员 
--"密码"中输入该用户的密码 

3.设置SQL  Server身份验证模式,解决连接时的权限问题 

企业管理器 
--右键SQL实例--属性 
--安全性--身份验证 
--选择"SQL  Server  和  Windows" 
--确定 

4.在发布服务器和订阅服务器上互相注册 
企业管理器 
--右键SQL  Server组 
--新建SQL  Server注册... 
--下一步--可用的服务器中,输入你要注册的远程服务器名 --添加 
--下一步--连接使用,选择第二个"SQL  Server身份验证" 
--下一步--输入用户名和密码 
--下一步--选择SQL  Server组,也可以创建一个新组 
--下一步--完成 

正式开始: 

1.配置发布服务器 

a.  选中指定  [服务器]  节点 
b.  从  [工具]  下拉菜单的  [复制]  子菜单中选择  [发布、订阅服务器和分发]  命令 
c.  系统弹出一个对话框点  [下一步]  然后看着提示操作 
--直到"指定快照文件夹" 
--在"快照文件夹"中输入准备工作中创建的目录:  \\ <服务器名>\pub 
一[下一步]  直操作到完成。 
d.  当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器 
同时也生成一个分发数据库(distribution) 


--------------------------------------- 

2.创建发布 
a.  选中指定的服务器 
b.  从  [工具]  菜单的  [复制]  子菜单中选择  [创建和管理发布]  命令。此时系统会弹出 
一个对话框 
c.  选择要创建发布的数据库,然后单击  [创建发布] 
d.  在  [创建发布向导]  的提示对话框中单击  [下一步]  系统就会弹出一个对话框。对话 
框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个 
大家可以去看看帮助) 
e.  单击  [下一步]  系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在 
不同的数据库如  ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行 
"SQL  SERVER  2000"的数据库服务器 
f.  单击  [下一步]  ,选择要发布的对象(如表,视图,存储过程,一般是表) 
g.  然后  [下一步]  直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了 
一个共享数据库。 


--------------------------------------- 

3.设计订阅 
a.  选中指定的订阅服务器 
b.  从  [工具]  下拉菜单中选择  [复制]  子菜单的  [请求订阅] 
c.  按照提示单击  [下一步]  操作直到系统会提示检查SQL  SERVER代理服务的运行