SQLServer跨庫查詢 分布式查詢

2022-03-12 01:57:01 字數 4893 閱讀 5410

--

用openrowset連線遠端sql或插入資料

--如果只是臨時訪問,可以直接用openrowset

--查詢示例

select

*from

openrowset('

sqloledb','

sql伺服器名

';'使用者名稱

';'密碼

',資料庫名.dbo.表名)

在跨庫查詢時需要啟用ad hoc distributed queries

啟用ad hoc distributed queries:

exec sp_configure 'show advanced options',1

reconfigure

exec sp_configure 'ad hoc distributed queries',1

reconfigure

使用完成後,關閉ad hoc distributed queries:

exec sp_configure 'ad hoc distributed queries',0

reconfigure

exec sp_configure 'show advanced options',0

reconfigure

--匯入示例

select

*into 表 from

openrowset('

sqloledb','

sql伺服器名

';'使用者名稱

';'密碼

',資料庫名.dbo.表名)

--建立鏈結伺服器

exec sp_addlinkedserver '

srv_lnk

','','

sqloledb

','遠端伺服器名或ip位址

'exec sp_addlinkedsrvlogin '

srv_lnk

','false

',null,'

使用者名稱','密碼'

go--

查詢示例

select

*from srv_lnk.資料庫名.dbo.表名

--匯入示例

select

*into 表 from srv_lnk.資料庫名.dbo.表名

--以後不再使用時刪除鏈結伺服器

exec sp_dropserver '

srv_lnk

','droplogins'go

--下面的示例訪問來自某個表的資料,該錶在 sql server 的另乙個例項中。

select

*from

opendatasource('

sqloledb

','data source=servername;user id=myuid;password=mypass

').northwind.dbo.categories

--下面是個查詢的示例,它通過用於 jet 的 ole db 提供程式查詢 excel 電子**。

select

*from

opendatasource( '

microsoft.jet.oledb.4.0

','data source="c:financeaccount.xls";user id=admin;password=;extended properties=excel 5.0

')...xactions

複製**

例如:

select

*from

openquery(far_mdb, '

select * from mdb_member

') 這就是從我的鏈結伺服器當中去查詢mdb_member表的資料

備註:1、關於鏈結伺服器的詳細情況請參閱聯機叢書中的sp_addlinkedserver、 sp_addlinkedsrvlogin、sp_addserver、sp_dropserver、sp_serveroption、sp_linkedservers等系統級儲存過程。

2、關於此鏈結伺服器的建立及其使用在不同環境下(全部內網伺服器、一內網一公網伺服器、全公網伺服器)測試,均告通過。

3、有時候在儲存過程中訪問鏈結伺服器的時候可能會碰到如下的提示,必須要對ansi warning 和ansi nulls進行設定,這時候按照如下的方法進行設定:

設定本地資料庫的屬性--

>連線-->選上ansi warning 和 ansi nulls

如何用sql語句進行跨庫查詢

在機器b上的資料庫database2中建立乙個臨時表#tmp,

內容就是機器a上的資料庫database1裡面的table1。

如何用sql語句完成?(不借用dts等)

sql code --

建立鏈結伺服器

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 本地表

用 鏈結伺服器

openrowset

opendatasource

都可以鏈結伺服器.database1.dbo.table1

鏈結伺服器.database1.dbo.table1

sql code

select

*into #

from

openrowset('

sqloledb

','ip

';'sa

';'','

select * from pubs.dbo.jobs

')如果只是偶爾使用 就用opendatasource/

openrowset 固定的頻繁使用建linked server

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...