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

寻求两台sqlserver服务器数据同步
一台服务器是内部用的,一台是外部用的,现在就要使外部的数据库与内部的数据实现同步!
如更改内部数据库的一个表的字段,或添加一个新的字段或表,用什么方法实现外部也自动添加,与修改?
总之就是数据同步了,有什么好方法请指明!

------解决方案--------------------
老大不在,看看他的:

复制前要做好的准备工作:

1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
我的电脑
--控制面板
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户

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

我的电脑--D:\ 新建一个目录,名为: PUB
--右键这个新建的目录
--属性--共享
--选择 "共享该文件夹 "
--通过 "权限 "按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
--确定


3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)

开始--程序--管理工具--服务
--右键SQLSERVERAGENT
--属性--登陆--选择 "此账户 "
--输入或者选择第一步中创建的windows登录用户名
-- "密码 "中输入该用户的密码

4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)

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

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

6.对于只能用IP,不能用计算机名的,为其注册服务器别名
(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择 "tcp/ip "--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--如果你修改了SQL的端口,取消选择 "动态决定端口 ",并输入对应的端口号
------解决方案--------------------
关注,我也在准备做这方面的功能,且目前想到的问题就觉得很麻烦了,如下:

数据库的表在设计时有自动编号ID,然后会把该自动编号ID产生的值记录在其它表字段中,换言之,如把本地的数据同步到远程(假如远程的库结构和本地是一模一样的),那同步远程时如何把本地事先已编号的ID值给远程(又假如远程的自动编号ID如和本地的自动编号ID有重了,这时怎处理?)
------解决方案--------------------
你说的是可以用发布及订阅来实现的;我的建议是如果使用数据库复制就不要使用自增ID。
------解决方案--------------------
不要用自增列,事物同步,我就这么做的