远程数据库操作整理


为了下面一行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   *   from   openrowset ' SQLOLEDB  ' ' sql服务器名  ' ' 用户名  ' ' 密码  ' ,数据库名.dbo.表名) 

-- 生成本地表 
select   *   into  表  from   openrowset ' SQLOLEDB  ' ' sql服务器名  ' ' 用户名  ' ' 密码  ' ,数据库名.dbo.表名) 

-- 把本地表导入远程表 
insert   openrowset ' SQLOLEDB  ' ' sql服务器名  ' ' 用户名  ' ' 密码  ' ,数据库名.dbo.表名)  select   * from  本地表 

--远程表导入本地
select  *  into  本地表  from  openrowset('SQLOLEDB', 'sql服务器名'; 'sa'; 'pwd', 数据库名.dbo.表名)

-- 更新本地表 
update  b 
set  b.列A = a.列A 
from   openrowset ' SQLOLEDB  ' ' sql服务器名  ' ' 用户名  ' ' 密码  ' ,数据库名.dbo.表名) as  a  inner   join  本地表 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 * 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 

你可能感兴趣的:(sql,server)