日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[转载]sql server 分布式查询

發布時間:2024/7/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转载]sql server 分布式查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
--用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

?

原文見 http://www.cnblogs.com/doosmile/archive/2012/03/16/2400646.html

轉載于:https://www.cnblogs.com/draweye/p/6478426.html

總結

以上是生活随笔為你收集整理的[转载]sql server 分布式查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。