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()到底有什么区别? 展开
参考资料:select * into 表 from
('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)
以及openrowset()和openquery()到底有什么区别? 展开
2个回答
展开全部
在服务器2 数据库2的查询分析器里执行
insert into 新表名
select *
from OPENDATASOURCE('SQLOLEDB','Data Source=服务器1;User ID=sa1;Password=123) .数据库1.dbo.表1
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 只返回第一个。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * into #A from OPENDATASOURCE('SQLOLEDB','Data Source=服务器1;User ID=sa1;Password=123) .数据库1.dbo.表1
insert into 表2
select * from #a
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 本地表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询