日期:2014-05-17  浏览次数:20664 次

求大神指导下异地数据同步通过触发器能不能实现?
本地表A
ID   name   password
1    张三   1234
2    李四   5678

远程表A
ID   name   password
1    张三   1234
2    李四   5678

如果本地的张三的密码变了,那么远程表A里的张三的密码也跟着本地的改变,这个触发器怎么弄?
主要是异地数据同步这块不会。。。

------解决方案--------------------
触发器做不到的,考虑一个同步程序实现
------解决方案--------------------
首先要创建远程服务器的链接

--删除链接器
--sp_linkedservers
if EXISTS(Select name from sys.servers 
where name = 'toServer1' AND  is_data_access_enabled = '1')
Exec sp_dropserver 'toServer1','droplogins'
GO

--添加链接器
EXEC sp_addlinkedserver   
   @server='toServer1', 
   @srvproduct='',
   @provider='SQLNCLI', 
   @datasrc='远程IP地址'

--添加登陆
Exec sp_addlinkedsrvlogin 'toServer1','false','sa','sa','123'
GO
--执行
Update toServer1.数据库.dbo.表1 set 密码=新密码 Where 用户id=修改的用户ID
--删除链接
exec sp_droplinkedsrvlogin 'toServer1','sa'
------解决方案--------------------
当表很多的时候,用复制技术会比触发器快且对服务器的影响小
------解决方案--------------------
不建议用TRIGGER这样远程同步,如果因网络问题,你这台机子都不能操作
建议定时同步,至少不会因为网络或副机而影响主机