--複製**用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...