SQL SERVER 数据库 怎么从一个服务器一个表中把数据插入到另一个服务器中的一个表内

服务器1数据库1表1里有字段a1,b1,c1,d1;服务器2数据库2表2里有字段a2,b2,c2,d2;服务器3数据库3表3里有字段a3,b3,c3,d3,e3;(此表现... 服务器1 数据库1 表1里有字段 a1,b1,c1,d1;
服务器2 数据库2 表2里有字段 a2,b2,c2,d2;
服务器3 数据库3 表3里有字段 a3,b3,c3,d3,e3;(此表现无数据)
需要将表1中a1,b1字段,表2中c2,d2字段插入到 表3中的a3,b3,c3,d3字段里。
拜托大家!
展开
 我来答
lol_ko
2012-09-11 · 超过32用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:62.2万
展开全部
楼主您好您的意思实际上是SQLserver的分布式查询:如果一个项目需要二至多台服务器,而我们又必须从几台服务器中将数据取出来,这就必须用分布式查询!
在这里有两个概念:本地数据源、远程数据源!
本地数据源指的是单个服务器上的数据而远程数据源指的是另一个SQL实例上的数据。
如何跨服务器取数呢?
一、
如果经常访问或数据量大,建议用链接服务器--创建链接服务器
exec sp_addlinkedserver ''srv_lnk'','''',''SQLOLEDB'',''远程服务器名或ip地址''
exec sp_addlinkedsrvlogin ''srv_lnk'',''false'',null,''用户名'',''密码''go

--查询示例:
select * from srv_lnk.数据库名.dbo.表名

--导入示例:
select * into 表 from srv_lnk.数据库名.dbo.表名go--以后不再使用时删除链接服务器

exec sp_dropserver ''srv_lnk'',''droplogins''
二、
--如果只是临时访问,可以直接用openrowset

--查询示例:
select * from openrowset(''SQLOLEDB'',''sql服务器名'';''用户名'';''密码'',数据库名.dbo.表名)
--导入示例:
select * into 表 from openrowset(''SQLOLEDB'',''sql服务器名'';''用户名'';''密码'',数据库名.dbo.表名)

如何在企业管理器中设置呢?
SQL实例--->安全性--->链接服务器--->右键新建链接服务器常规中输入链接服务器的名字,选其它数据源,选SQLOLEDB,数据源写上,一般写IP地址再选安全性-----》选本地登陆----》模拟打勾用此安全上下文进行,输入用户与密码。

常见问题:1.在建立完链接服务器后,我们进行查询操作例:我们已对DFLD的服务器做了链接,紧接着我们想访问它中PUBS数据库中的Authors表Select * From DFLD.PUBS..Authors经常会出二类问题
1.提示 异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这 些选项,然后重新发出查询。 这种提示是因为没有将ANSI_NULLS与ANSI_WARNINGS打开 SET ANSI_NULLS ON SET ANSI_WARNINGS ON Select * From DFLD.PUBS..Authors--这样就可以了!
2.提示 某机器MSDTC服务不可用 这种提示很简单,只需要将MSDTC服务打开就是了!注:需要双方均打开MSDTC服务,默认不打开
yanxiao410
2012-09-10 · TA获得超过1583个赞
知道小有建树答主
回答量:928
采纳率:0%
帮助的人:549万
展开全部
1、在服务器3上建立服务器1、服务器2 的连接服务器
--exec sp_addlinkedserver '注册名','','SQLOLEDB','远程数据库名'
--exec sp_addlinkedsrvlogin '注册名','false',null,'用户名','密码'

比如建立后服务器1和服务器2 的注册名分别是S1和S2 那么
insert into 表3
(
a3,b3,c3,d3
)
select a.a1,a.b1,b.c2,b.d2
from s1.[数据库].dbo.[表1] a ,s2.[数据库].dbo.[表2] b
追问
提示错误:因为OLE DB 访问接口 'sqlncli'配置为单线程单元模式下运行,所以该访问接口无法
麻烦您指导
追答
你检查一下你的电脑是多少位的,如果是32位的 那么你在重新安装一下 ole db的驱动32位的
如果是64位的再重新安装一下64位的驱动
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郭某人来此
推荐于2017-09-28 · TA获得超过1645个赞
知道答主
回答量:952
采纳率:100%
帮助的人:85.8万
展开全部
楼主您好您的意思实际上是SQLserver的分布式查询:如果一个项目需要二至多台服务器,而我们又必须从几台服务器中将数据取出来,这就必须用分布式查询!
在这里有两个概念:本地数据源、远程数据源!
本地数据源指的是单个服务器上的数据而远程数据源指的是另一个SQL实例上的数据。
如何跨服务器取数呢?
一、
如果经常访问或数据量大,建议用链接服务器--创建链接服务器
exec sp_addlinkedserver ''srv_lnk'','''',''SQLOLEDB'',''远程服务器名或ip地址''
exec sp_addlinkedsrvlogin ''srv_lnk'',''false'',null,''用户名'',''密码''go

--查询示例:
select * from srv_lnk.数据库名.dbo.表名

--导入示例:
select * into 表 from srv_lnk.数据库名.dbo.表名go--以后不再使用时删除链接服务器

exec sp_dropserver ''srv_lnk'',''droplogins''
二、
--如果只是临时访问,可以直接用openrowset

--查询示例:
select * from openrowset(''SQLOLEDB'',''sql服务器名'';''用户名'';''密码'',数据库名.dbo.表名)
--导入示例:
select * into 表 from openrowset(''SQLOLEDB'',''sql服务器名'';''用户名'';''密码'',数据库名.dbo.表名)

如何在企业管理器中设置呢?
SQL实例--->安全性--->链接服务器--->右键新建链接服务器常规中输入链接服务器的名字,选其它数据源,选SQLOLEDB,数据源写上,一般写IP地址再选安全性-----》选本地登陆----》模拟打勾用此安全上下文进行,输入用户与密码。

常见问题:1.在建立完链接服务器后,我们进行查询操作例:我们已对DFLD的服务器做了链接,紧接着我们想访问它中PUBS数据库中的Authors表Select * From DFLD.PUBS..Authors经常会出二类问题
1.提示 异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这 些选项,然后重新发出查询。 这种提示是因为没有将ANSI_NULLS与ANSI_WARNINGS打开 SET ANSI_NULLS ON SET ANSI_WARNINGS ON Select * From DFLD.PUBS..Authors--这样就可以了!
2.提示 某机器MSDTC服务不可用 这种提示很简单,只需要将MSDTC服务打开就是了!注:需要双方均打开MSDTC服务,默认不打开
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chzjxgd
2012-09-11 · TA获得超过499个赞
知道小有建树答主
回答量:420
采纳率:0%
帮助的人:133万
展开全部
yanxiao410| 四级
说的思路是正确的

你没有说你用的是哪个版本的sql server
如是2005以上可以在sql server studio里面的端点>右键添加 图形化操作,命令就像他说的做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式