SQL Server 跨資料庫查詢

2021-05-23 17:36:28 字數 2383 閱讀 1920

語句

select * from 資料庫a.dbo.表a a, 資料庫b.dbo.表b b where a.field=b.field

"dbo"可以省略 如

select * from 資料庫a..表a a, 資料庫b..表b b where a.field=b.field

sqlserver資料庫:

--這句是對映乙個遠端資料庫

exec sp_addlinkedserver '遠端資料庫的ip或主機名',n'sql server'

--這句是登入遠端資料庫

exec sp_addlinkedsrvlogin '遠端資料庫的ip或主機名', 'false', null, '登入名', '密碼'

--登入後,可以用以下格式操作遠端資料庫中的物件

select * from [遠端資料庫的ip或主機名].[資料庫名].[dbo].[表名]

insert into openrowset('sqloledb','192.168.0.100';'sa';'10060','select * from knss2009.dbo.yw_kck') select * from yw_kck

不同伺服器資料庫之間的資料操作

--建立鏈結伺服器 

exec sp_addlinkedserver   'itsv ', ' ', 'sqloledb ', '遠端伺服器名或ip位址 ' 

exec sp_addlinkedsrvlogin 'itsv ', 'false ',null, '使用者名稱 ', '密碼 ' 

--查詢示例 

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

SQLServer跨庫查詢

用openrowset連線遠端sql或插入資料 如果只是臨時訪問,可以直接用openrowset 查詢示例 select from openrowset sqloledb sql伺服器名 使用者名稱 密碼 資料庫名.dbo.表名 在跨庫查詢時需要啟用ad hoc distributed querie...

SQL Server跨庫查詢

方式一 語句select from 資料庫a.dbo.表a a,資料庫b.dbo.表b b where a.field b.field dbo 可以省略 如 select from 資料庫a.表a a,資料庫b.表b b where a.field b.field 方式二 在乙個資料庫掛上另乙個資料...

sql server跨庫查詢

方式一 dbo可以省略 select from 資料庫a.dbo.表a a,資料庫b.dbo.表b b where a.field b.field 方式二 在乙個資料庫掛上另乙個資料庫的外鏈 對映乙個遠端資料庫 exec sp addlinkedserver 遠端資料庫的ip或主機名 n sql s...