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

A 服务器上的数据库和B服务器上的数据库实现指定字段的同步
本帖最后由 jiangshaolu 于 2013-01-03 17:04:10 编辑
有2个不同服务器的sql server 数据库,A数据库中A表中字段为姓名、电话,联系方式;B数据库中A表中只有姓名和电话,如何实现两个表的对应记录的增删改?一个记录删除另一个也删除,一个修改了另一个也随之修改
请高手指点。 
急~~~~

------解决方案--------------------
如果是跨实例访问,先用下面的语句,然后再用3楼的方法就可以了:
抄F姐的 
/*不同服务器数据库之间的数据操作*/?? 
--创建链接服务器 
EXEC sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
EXEC sp_addlinkedsrvlogin 'ITSV ', 'false ', NULL, '用户名 ', '密码 '?
?--查询示例? 
SELECT? *
FROM??? ITSV.数据库名.dbo.表名??? 
?--导入示例? 
SELECT? *
INTO??? 表
FROM??? ITSV.数据库名.dbo.表名??? 
?--以后不再使用时删除链接服务器? 
EXEC sp_dropserver 'ITSV ', 'droplogins '??
?--连接远程/局域网数据(openrowset/openquery/opendatasource)? 
?--1、openrowset??? 
?--查询示例? 
SELECT? *
FROM??? OPENROWSET('SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ', 数据库名.dbo.表名)??? 
?--生成本地表? 
SELECT? *
INTO??? 表
FROM??? OPENROWSET('SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ', 数据库名.dbo.表名)?? 
??--把本地表导入远程表? 
INSERT? OPENROWSET('SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ', 数据库名.dbo.表名)
????????SELECT? *
????????FROM??? 本地表??? 
??--更新本地表 
UPDATE? b
SET???? b.列A = a.列A
FROM??? OPENROWSET('SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ', 数据库名.dbo.表名) AS a
????????INNER JOIN 本地表 b ON a.column1 = b.column1 - -openquery用法需要创建一个连接??? 
???--首先创建一个连接创建链接服务器? 
EXEC sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
???--查询 
SELECT? *
FROM??? OPENQUERY(ITSV, 'SELECT *? FROM 数据库.dbo.表名 ')? 
???--把本地表导入远程表? 
INSERT? OPENQUERY(ITSV, 'SELECT *? FROM 数据库.dbo.表名 ')
????????SELECT? *
????????FROM??? 本地表? 
???--更新本地表? 
UPDATE? b
SET???? b.列B = a.列B
FROM??? OPENQUERY(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') AS a
????????INNER JOIN 本地表 b ON a.列A = b.列A??? 
???--3、opendatasource/openrowset? 
SELECT? *
FROM??? OPENDATASOURCE('SQLOLEDB ',
???????????????????????'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').test.dbo.roy_ta? --把本地表导入远程表
 
------解决方案--------------------
多试几个吧。
http://www.jb51.net/article/24810.htm

http://technet.microsoft.com/zh-CN/library/ff772782

http://www.cnblogs.com/zhangronghua/archive/2007/09/19/898048.html