SQL数据库,如何把服务器中的一张表插入到另外一个服务器的一张表中?SQL语句该如何写?如下:

服务器1(user:sa1,password:123)、数据库1、表1和服务器2(user:sa2,password:456)、数据库2、表2,现需要将表1插入到表2中,... 服务器1(user:sa1,password:123)、数据库1、表1 和 服务器2(user:sa2,password:456)、数据库2、表2,现需要将表1插入到表2中,使用SQL语句如何实现?

参考资料:select * into 表 from
('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)

以及openrowset()和openquery()到底有什么区别?
展开
 我来答
doreen_33
推荐于2017-11-25 · TA获得超过957个赞
知道小有建树答主
回答量:392
采纳率:100%
帮助的人:142万
展开全部
在服务器2 数据库2的查询分析器里执行
insert into 新表名
select *
from OPENDATASOURCE('SQLOLEDB','Data Source=服务器1;User ID=sa1;Password=123) .数据库1.dbo.表1
更多追问追答
追问
那我还想请问您:openrowset()和openquery()以及和你刚刚写的OPENDATASOURCE(),三者到底怎么去理解?
追答
OPENDATASOURCE 
不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分。
OPENQUERY
在给定的链接服务器(一个 OLE DB 数据源)上执行指定的直接传递查询。可以在查询的 FROM 子句中像引用表名那样引用 OPENQUERY 函数。依据 OLE DB 提供程序的能力,还可以将 OPENQUERY 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。

OPENROWSET
包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
unitech2010
2012-06-07 · TA获得超过1062个赞
知道小有建树答主
回答量:1025
采纳率:100%
帮助的人:897万
展开全部
select * into #A from OPENDATASOURCE('SQLOLEDB','Data Source=服务器1;User ID=sa1;Password=123) .数据库1.dbo.表1
insert into 表2
select * from #a
更多追问追答
追问
那我还想请问您:openrowset()和openquery()以及和你刚刚写的OPENDATASOURCE(),三者到底怎么去理解?
追答
我只是用过OPENDATASOURCE
这也是我在网上看到的 你可以看看下面的案例,也许对你有帮助

--查询示例
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
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
select * from 本地表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式