S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

远程数据库操作整理

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*intofromopenrowset( '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
innerjoin 本地表 b on a.列A=b.列A

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理