由於業務邏輯的多樣性
經常得在sql server中查詢不同資料庫中資料
這就產生了分布式查詢的需求
現我將開發中遇到的幾種查詢總結如下:
1.access版本
--建立連線伺服器
exec sp_addlinkedserver
--要建立的鏈結伺服器名稱
'ai',
--產品名稱
'access',
--ole db 字元
'microsoft.jet.oledb.4.0',
--資料來源
--格式:
-- 碟符:\路徑\檔名
-- \\網路名\共享名\檔名 (網路版本)
'd:\testdb\db.mdb'
go--建立鏈結伺服器上遠端登入之間的對映
--鏈結伺服器預設設定為用登陸的上下文進行
--現在我們修改為連線鏈結伺服器不需使用任何登入或密碼
exec sp_addlinkedsrvlogin 'ai','false'
go--查詢資料
select * from ai...mytable
go2.excel版本
--建立連線伺服器
exec sp_addlinkedserver
--要建立的鏈結伺服器名稱
'ai_ex',
--產品名稱
'ex',
--ole db 字元
'microsoft.jet.oledb.4.0',
--資料來源
--格式:
-- 碟符:\路徑\檔名
-- \\網路名\共享名\檔名 (網路版本)
'd:\testdb\mybook.xls' ,
null,
--ole db 提供程式特定的連線字串
'excel 5.0'
go----建立鏈結伺服器上遠端登入之間的對映
--鏈結伺服器預設設定為用登陸的上下文進行
--現在我們修改為連線鏈結伺服器不需使用任何登入或密碼
exec sp_addlinkedsrvlogin 'ai_ex','false'
go--查詢資料
select * from ai_ex...sheet3$
go3.ms sql版本
--建立連線伺服器
exec sp_addlinkedserver
--要建立的鏈結伺服器名稱
'ai_mssql',
--產品名稱
'ms',
--ole db 字元
'sqloledb',
--資料來源
'218.204.111.111,3342'
go--建立鏈結伺服器上遠端登入之間的對映
exec sp_addlinkedsrvlogin
'ai_mssql',
'false',
null,
--遠端伺服器的登陸使用者名稱
'zhangzhe',
--遠端伺服器的登陸密碼
'fish2231'
go--查詢資料
select * from ai_mssql.pubs.dbo.jobs
go--還有乙個更簡單的辦法
--這種方式在鏈結伺服器建立後,它是預設開放rpc的
--建立連線伺服器
exec sp_addlinkedserver
--要建立的鏈結伺服器名稱
--這裡就用資料來源作名稱
'218.204.111.111,3342',
'sql server'
go--建立鏈結伺服器上遠端登入之間的對映
exec sp_addlinkedsrvlogin
'218.204.111.111,3342',
'false',
null,
--遠端伺服器的登陸使用者名稱
'zhangzhe',
--遠端伺服器的登陸密碼
'fish2231'
go--查詢資料
select * from [218.204.253.131,3342].pubs.dbo.jobs
go4.oracle版本
--建立連線伺服器
exec sp_addlinkedserver
--要建立的鏈結伺服器名稱
'o',
--產品名稱
'oracle',
--ole db 字元
'msdaora',
--資料來源
'acc'
go--建立鏈結伺服器上遠端登入之間的對映
exec sp_addlinkedsrvlogin
'o',
'false',
null,
--oracle伺服器的登陸使用者名稱
'f02m185',
--oracle伺服器的登陸密碼
'f02m185185'
go--查詢資料
--格式:linkserver..oracle使用者名稱.表名
--注意用大寫,因為在oracle的資料字典中為大寫
select * from o..f02m185.ai
go
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...