方式一(dbo可以省略)
select*from 資料庫a.dbo.表a a,
資料庫b.dbo.表b b
where a.field = b.field
方式二(在乙個資料庫掛上另乙個資料庫的外鏈)
//對映乙個遠端資料庫
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
2、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 跨庫取數使用示例(注意做判斷):
if exists( select
1from sys.synonyms
where name = 'syn305_ys_costandcashset') drop synonym syn305_ys_costandcashsetgo
create synonym syn305_ys_costandcashset for [dotnet_erp305_hnjy].dbo.ys_costandcashset
go
不允許遠端訪問出現異常解決方案:
exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'ad hoc distributed queries',1reconfigure
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 方式二 在乙個資料庫掛上另乙個資料...
sqlserver 跨庫查詢
select from opendatasource sqloledb data source 遠端ip user id sa password 密碼 庫名.dbo.表名 where 條件 解除sql阻止 sql server 阻止了對元件 adhocdistributedqueries 的 sta...