Posted on 2010-02-02 18:30
S.l.e!ep.¢% 阅读(231)
评论(0) 编辑 收藏 引用 所属分类:
DataBase
为了下面一行SQL语句,我弄了整整一下午
select * into dDB.dbo.wqq from openrowset('SQLOLEDB', '192.168.0.10'; 'sa'; 'pwd', sDB.dbo.er)
感慨下自己的SQL还有待加强,下面是一些资料的整理
1、openrawset
openrawset函数从任何支持注册OLE DB的远程或者本地数据源获取数据,比如从SQL Server或Access的远程实例中提取数据
--查询示例
select*fromopenrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--生成本地表
select*into 表 fromopenrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--把本地表导入远程表
insertopenrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) select*from 本地表
--远程表导入本地
select * into 本地表 from openrowset('SQLOLEDB', 'sql服务器名'; 'sa'; 'pwd', 数据库名.dbo.表名)
--更新本地表
update b
set b.列A=a.列A
fromopenrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a innerjoin 本地表 b
on a.column1=b.column1
2、openquery
openquery在给定的链接服务器(一个 OLE DB 数据源)上执行指定的直接传递查询。可以在查询的 FROM 子句中像引用表名那样引用 OPENQUERY 函数。
用法需要创建一个连接
--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', '', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, 'user', 'pwd'
--查询
select*FROMopenquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insertopenquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select*from 本地表
--更新本地表
update b
set b.列B=a.列B
FROMopenquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
innerjoin 本地表 b on a.列A=b.列A