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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL SERVER 跨服务器查询

發(fā)布時間:2025/3/15 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL SERVER 跨服务器查询 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
方法一:
用OPENDATASOURCE
下面是個跨SQLServer查詢的示例
Select TableA.*,TableB.* From OPENDATASOURCE(
? ? ? ? ?'SQLOLEDB',
? ? ? ? ?'Data Source=ServerA;User ID=UserID;Password=Password'
? ? ? ? ?).databaseAName.dbo.TableA?
Left Join?
?OPENDATASOURCE(
? ? ? ? ?'SQLOLEDB',
? ? ? ? ?'Data Source=ServerB;User ID=UserID;Password=Password'
? ? ? ? ?).databaseBName.dbo.TableB On TableA.key=TableB.key?


下面是個查詢的示例,它通過用于 Jet 的 OLE DB 提供程序查詢 Excel 電子表格。
SELECT *?
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
? 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions




方法二(也可以在企業(yè)管理器里添加 linkServer):
sp_addlinkedserver
創(chuàng)建一個鏈接的服務(wù)器,使其允許對分布式的、針對 OLE DB 數(shù)據(jù)源的異類查詢進行訪問。在使用 sp_addlinkedserver 創(chuàng)建鏈接的服務(wù)器之后,此服務(wù)器就可以執(zhí)行分布式查詢。如果鏈接服務(wù)器定義為 Microsoft? SQL Server?,則可執(zhí)行遠程存儲過程。


語法
sp_addlinkedserver [ @server = ] 'server'
? ? [ , [ @srvproduct = ] 'product_name' ]
? ? [ , [ @provider = ] 'provider_name' ]
? ? [ , [ @datasrc = ] 'data_source' ]
? ? [ , [ @location = ] 'location' ]
? ? [ , [ @provstr = ] 'provider_string' ]
? ? [ , [ @catalog = ] 'catalog' ]


權(quán)限
執(zhí)行許可權(quán)限默認授予 sysadmin 和 setupadmin 固定服務(wù)器角色的成員。


簡單示例:
//創(chuàng)建linkServer
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','服務(wù)器名'?
//登陸linkServer
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用戶名','密碼'?
//查詢linkServer的數(shù)據(jù)庫DataBaseA的表TableA
Select * From srv_lnk.DataBaseA.dbo.TableA
//List the tables in the linked server
EXEC sp_tables_ex txtsrv






示例
A. 使用用于 SQL Server 的 Microsoft OLE DB 提供程序
使用用于 SQL Server 的 OLE DB 創(chuàng)建鏈接服務(wù)器?
下面的示例創(chuàng)建一臺名為 SEATTLESales 的鏈接服務(wù)器,該服務(wù)器使用用于 SQL Server 的 Microsoft OLE DB 提供程序。


USE master
GO
EXEC sp_addlinkedserver?
? ? 'SEATTLESales',
? ? N'SQL Server'
GO


在 SQL Server 的實例上創(chuàng)建鏈接服務(wù)器?
此示例在 SQL Server 的實例上創(chuàng)建一臺名為 S1_instance1 的鏈接服務(wù)器,該服務(wù)器使用 SQL Server 的 Microsoft OLE DB 提供程序。


EXEC ? ?sp_addlinkedserver ? ?@server='S1_instance1', @srvproduct='',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @provider='SQLOLEDB', @datasrc='S1\instance1'


B. 使用用于 Jet 的 Microsoft OLE DB 提供程序
此示例創(chuàng)建一臺名為 SEATTLE Mktg 的鏈接服務(wù)器。






說明 ?本示例假設(shè)已經(jīng)安裝 Microsoft Access 和示例 Northwind 數(shù)據(jù)庫,且 Northwind 數(shù)據(jù)庫駐留在 C:\Msoffice\Access\Samples。




USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver?
? ?@server = 'SEATTLE Mktg',?
? ?@provider = 'Microsoft.Jet.OLEDB.4.0',?
? ?@srvproduct = 'OLE DB Provider for Jet',
? ?@datasrc = 'C:\MSOffice\Access\Samples\Northwind.mdb'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver?
? ?'SEATTLE Mktg',?
? ?'OLE DB Provider for Jet',
? ?'Microsoft.Jet.OLEDB.4.0',?
? ?'C:\MSOffice\Access\Samples\Northwind.mdb'
GO


C. 使用用于 Oracle 的 Microsoft OLE DB 提供程序
此示例創(chuàng)建一臺名為 LONDON Mktg 的鏈接服務(wù)器,該服務(wù)器使用用于 Oracle 的 Microsoft OLE DB 提供程序,并且假設(shè)此 Oracle 數(shù)據(jù)庫的 SQL*Net 別名為 MyServer。


USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver
? ?@server = 'LONDON Mktg',
? ?@srvproduct = 'Oracle',
? ?@provider = 'MSDAORA',
? ?@datasrc = 'MyServer'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver?
? ?'LONDON Mktg',?
? ?'Oracle',?
? ?'MSDAORA',
? ?'MyServer'
GO


D. 將 data_source 參數(shù)與用于 ODBC 的 Microsoft OLE DB 提供程序一起使用
此示例創(chuàng)建一臺名為 SEATTLE Payroll 的鏈接服務(wù)器,該服務(wù)器使用用于 ODBC 的 Microsoft OLE DB 提供程序和 data_source 參數(shù)。






說明 ?在執(zhí)行 sp_addlinkedserver 之前,必須在服務(wù)器上將指定的 ODBC 數(shù)據(jù)源名稱定義為系統(tǒng) DSN。




USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver?
? ?@server = 'SEATTLE Payroll',?
? ?@provider = 'MSDASQL',?
? ?@datasrc = 'LocalServer'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver?
? ?'SEATTLE Payroll',?
? ?'',?
? ?'MSDASQL',
? ?'LocalServer'
GO


E. 將 provider_string 參數(shù)與用于 ODBC 的 Microsoft OLE DB 提供程序一起使用
此示例創(chuàng)建一臺名為 LONDON Payroll 的鏈接服務(wù)器,該服務(wù)器使用用于 ODBC 的 Microsoft OLE DB 提供程序和 provider_string 參數(shù)。






說明 ?有關(guān) ODBC 連接字符串的更多信息,請參見 SQLDriverConnect 和如何分配句柄并與 SQL Server (ODBC) 連接。?




USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver?
? ?@server = 'LONDON Payroll',?
? ?@provider = 'MSDASQL',
? ?@provstr = 'DRIVER={SQL Server};SERVER=MyServer;UID=sa;PWD=;'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver?
? ?'LONDON Payroll',?
? ?'',?
? ?'MSDASQL',
? ?NULL,
? ?NULL,
? ?'DRIVER={SQL Server};SERVER=MyServer;UID=sa;PWD=;'
GO


F. 在 Excel 電子表格上使用用于 Jet 的 Microsoft OLE DB 提供程序
若要創(chuàng)建使用用于 Jet 的 Microsoft OLE DB 提供程序以訪問 Excel 電子表格的鏈接服務(wù)器定義,請首先在 Excel 中創(chuàng)建一個命名的范圍以指定要在 Excel 工作表中選擇的行和列。然后,可將此范圍的名稱引用為分布式查詢中的表名稱。


EXEC sp_addlinkedserver 'ExcelSource',
? ?'Jet 4.0',
? ?'Microsoft.Jet.OLEDB.4.0',
? ?'c:\MyData\DistExcl.xls',
? ?NULL,
? ?'Excel 5.0'
GO


為了訪問 Excel 電子表格中的數(shù)據(jù),請將某個范圍內(nèi)的單元與某個名稱相關(guān)聯(lián)。通過將范圍的名稱用作表名稱,可以訪問指定的已命名范圍。下列查詢利用前面設(shè)置的鏈接服務(wù)器,可訪問稱為 SalesData 的命名范圍。


SELECT *
FROM EXCEL...SalesData
GO


G. 使用用于檢索服務(wù)的 Microsoft OLE DB 提供程序
此示例創(chuàng)建一臺鏈接服務(wù)器,并且使用 OPENQUERY 從為檢索服務(wù)啟用的鏈接服務(wù)器和文件系統(tǒng)中檢索信息。


EXEC sp_addlinkedserver FileSystem,
? ?'Index Server',
? ?'MSIDXS',
? ?'Web'
GO
USE pubs
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
? ? ? WHERE TABLE_NAME = 'yEmployees')
? ?DROP TABLE yEmployees
GO
CREATE TABLE yEmployees
?(
? id ? ? ? int ? ? ? ? NOT NULL,
? lname ? ?varchar(30) NOT NULL,
? fname ? ?varchar(30) NOT NULL,
? salary ? money,
? hiredate datetime
?)
GO
INSERT yEmployees VALUES
?(?
? 10,
? 'Fuller',
? 'Andrew',
? $60000,
? '9/12/98'
?)
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
? ? ? WHERE TABLE_NAME = 'DistribFiles')
? ?DROP VIEW DistribFiles
GO
CREATE VIEW DistribFiles?
?AS
?SELECT *
?FROM OPENQUERY(FileSystem,
? ? ? ? ? ? ? ? ?'SELECT Directory,?
? ? ? ? ? ? ? ? ? ? FileName,
? ? ? ? ? ? ? ? ? ? DocAuthor,
? ? ? ? ? ? ? ? ? ? Size,
? ? ? ? ? ? ? ? ? ? Create,
? ? ? ? ? ? ? ? ? ? Write
? ? ? ? ? ? ? ? ? FROM SCOPE('' "c:\My Documents" '')
? ? ? ? ? ? ? ? ? WHERE CONTAINS(''Distributed'') > 0?
? ? ? ? ? ? ? ? ? ? AND FileName LIKE ''%.doc%'' ')
?WHERE DATEPART(yy, Write) = 1998
GO
SELECT *?
FROM DistribFiles
GO
SELECT Directory,
? FileName,?
? DocAuthor,?
? hiredate
FROM DistribFiles D, yEmployees E
WHERE D.DocAuthor = E.FName + ' ' + E.LName
GO


H. 使用用于 Jet 的 Microsoft OLE DB 提供程序訪問文本文件
此示例創(chuàng)建一臺直接訪問文本文件的鏈接服務(wù)器,而沒有將這些文件鏈接為 Access .mdb 文件中的表。提供程序是 Microsoft.Jet.OLEDB.4.0,提供程序字符串為"Text"。


數(shù)據(jù)源是包含文本文件的目錄的完整路徑名。schema.ini 文件(描述文本文件的結(jié)構(gòu))必須與此文本文件存在于相同的目錄中。有關(guān)創(chuàng)建 schema.ini 文件的更多信息,請參見 Jet 數(shù)據(jù)庫引擎文檔。


--Create a linked server
EXEC sp_addlinkedserver txtsrv, 'Jet 4.0',?
? ?'Microsoft.Jet.OLEDB.4.0',
? ?'c:\data\distqry',
? ?NULL,
? ?'Text'
GO


--Set up login mappings
EXEC sp_addlinkedsrvlogin txtsrv, FALSE, Admin, NULL
GO


--List the tables in the linked server
EXEC sp_tables_ex txtsrv
GO


--Query one of the tables: file1#txt
--using a 4-part name?
SELECT *?
FROM txtsrv...[file1#txt]


I. 使用用于 DB2 的 Microsoft OLE DB 提供程序
下面的示例創(chuàng)建一臺名為 DB2 的鏈接服務(wù)器,該服務(wù)器使用用于 DB2 的 Microsoft OLE DB 提供程序。


EXEC sp_addlinkedserver
? ?@server='DB2',
? ?@srvproduct='Microsoft OLE DB Provider for DB2',
? ?@catalog='DB2',
? ?@provider='DB2OLEDB',
? ?@provstr='Initial Catalog=PUBS;Data Source=DB2;HostCCSID=1252;Network Address=XYZ;Network Port=50000;Package Collection=admin;Default Schema=admin;'








方法三:
OPENQUERY
盡管查詢可能返回多個結(jié)果集,但是 OPENQUERY 只返回第一個。


語法
OPENQUERY ( linked_server , 'query' )?


參數(shù)
linked_server


一個標識符,表示鏈接的服務(wù)器的名稱。


'query'


在鏈接的服務(wù)器中執(zhí)行的查詢字符串。


注釋
OPENQUERY 不接受參數(shù)變量。


示例
下面的示例利用用于 Oracle 的 Microsoft OLE DB 提供程序針對 Oracle 數(shù)據(jù)庫創(chuàng)建一個名為 OracleSvr 鏈接的服務(wù)器。然后,該示例對此鏈接的服務(wù)器使用一個直接傳遞查詢。


說明 ?本示例假定已經(jīng)創(chuàng)建了一個名為 ORCLDB 的 Oracle 數(shù)據(jù)庫別名。


EXEC sp_addlinkedserver 'OracleSvr',?
? ?'Oracle 7.3',?
? ?'MSDAORA',?
? ?'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles')?
GO


方法四:
OPENROWSET
包含訪問 OLE DB 數(shù)據(jù)源中的遠程數(shù)據(jù)所需的全部連接信息。當(dāng)訪問鏈接服務(wù)器中的表時,這種方法是一種替代方法,并且是一種使用 OLE DB 連接并訪問遠程數(shù)據(jù)的一次性的、特殊的方法。可以在查詢的 FROM 子句中像引用表名那樣引用 OPENROWSET 函數(shù)。依據(jù) OLE DB 提供程序的能力,還可以將 OPENROWSET 函數(shù)引用為 INSERT、UPDATE 或 DELETE 語句的目標表。盡管查詢可能返回多個結(jié)果集,然而 OPENROWSET 只返回第一個。


語法
OPENROWSET ( 'provider_name'
? ? , { 'datasource' ; 'user_id' ; 'password'
? ? ? ? | 'provider_string' }
? ? , { [ catalog.] [ schema.] object
? ? ? ? | 'query' }?
? ? )?


示例
A. 將 OPENROWSET 與 SELECT 語句及用于 SQL Server 的 Microsoft OLE DB 提供程序一起使用
下面的示例使用用于 SQL Server 的 Microsoft OLE DB 提供程序訪問 pubs 數(shù)據(jù)庫中的 authors 表,該數(shù)據(jù)庫在一個名為 seattle1 的遠程服務(wù)器上。從 datasource、user_id 及 password 中初始化提供程序,并且使用 SELECT 語句定義返回的行集。


USE pubs
GO
SELECT a.*
FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',
? ?'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS a
GO


B. 將 OPENROWSET 與對象及用于 ODBC 的 OLE DB 提供程序一起使用
下面的示例使用用于 ODBC 的 OLE DB 提供程序以及 SQL Server ODBC 驅(qū)動程序訪問 pubs 數(shù)據(jù)庫中的 authors 表,該數(shù)據(jù)庫在一個名為 seattle1 的遠程服務(wù)器中。提供程序用在 ODBC 提供程序所用的 ODBC 語法中指定的 provider_string 進行初始化,定義返回的行集時使用 catalog.schema.object 語法。


USE pubs
GO
SELECT a.*
FROM OPENROWSET('MSDASQL',
? ?'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',
? ?pubs.dbo.authors) AS a
ORDER BY a.au_lname, a.au_fname
GO


C. 使用用于 Jet 的 Microsoft OLE DB 提供程序
下面的示例通過用于 Jet 的 Microsoft OLE DB 提供程序訪問 Microsoft Access Northwind 數(shù)據(jù)庫中的 orders 表。






說明 ?下面的示例假定已經(jīng)安裝了 Access。




USE pubs
GO
SELECT a.*
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',?
? ?'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)?
? ?AS a
GO


D. 使用 OPENROWSET 和 INNER JOIN 中的另一個表
下面的示例從本地 SQL Server Northwind 數(shù)據(jù)庫的 customers 表中,以及存儲在相同計算機上 Access Northwind 數(shù)據(jù)庫的 orders 表中選擇所有數(shù)據(jù)






說明 ?下面的示例假定已經(jīng)安裝了 Access。




USE pubs
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c INNER JOIN?
? ?OPENROWSET('Microsoft.Jet.OLEDB.4.0',?
? ?'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)?
? ?AS o
? ?ON c.CustomerID = o.CustomerID?
GO





總結(jié)

以上是生活随笔為你收集整理的SQL SERVER 跨服务器查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产粉嫩在线观看 | 欧美日韩在线中文字幕 | 成人久久在线 | 国产18一19sex性护士 | 国产 日韩 欧美 综合 | 国产精品一二三四五 | 日韩精品中文字幕在线观看 | 一区二区三区在线观看 | 午夜影院一区二区 | 不卡中文一二三区 | 日韩一区二区三区在线免费观看 | 国产色99 | 黄色片地址| 裸体的日本在线观看 | 黄色网址免费 | 五月婷婷在线视频 | av在线免费网址 | 中文字幕在线视频免费 | 色www国产亚洲阿娇 自拍一区在线 | 久久色视频 | 精品一区二区三区四区五区六区 | 欧美理论视频 | 久草资源网站 | 亚洲另类网站 | 青青欧美| 伊朗做爰xxxⅹ性视频 | 亚洲国产三区 | 午夜影院在线看 | 国产精品-区区久久久狼 | 这里只有精品6 | 影音先锋在线中文字幕 | 欧美一区二区免费电影 | 性久久久久久久久久久久 | 欧美精品一二三 | 欧美精品一二三 | 成人黄色短视频在线观看 | 婷婷六月激情 | 毛片在线观看视频 | wwwxxxx欧美 | 超碰麻豆 | 人人舔人人 | 114国产精品久久免费观看 | 欧美老少做受xxxx高潮 | 天天干夜夜夜 | 黄色在线观看免费视频 | 视频在线免费观看 | 久久视频精品 | 欧美美女色图 | 国产中文字幕久久 | 永久免费汤不热视频 | 就要爱爱tv | 国产精品无套 | 神秘电影永久入口 | 亚洲精品视频一区二区三区 | 99精品久久久久久中文字幕 | 草草影院地址 | 五月婷婷激情在线 | 一级一毛片 | 成人爱爱 | 91成人亚洲 | 最新天堂中文在线 | 日本福利在线观看 | 久久久久亚洲精品 | 天天舔天天摸 | 日本成人一区二区 | 性高跟丝袜xxxxhd | 在线免费日韩 | 日韩国产在线播放 | 色婷婷aⅴ一区二区三区 | 看特级黄色片 | 手机av电影在线 | 女人舌吻男人茎视频 | 噜噜狠狠狠狠综合久久 | 国产成人无码AA精品区 | 亚洲网站在线免费观看 | 免费午夜视频在线观看 | 九九热视频免费观看 | 中国zzji女人高潮免费 | 亚洲成熟女性毛茸茸 | 成人免费黄色av | 美丽的小蜜桃2:美丽人生 | 欧美日韩国产图片 | 亚洲成人二区 | 中文字幕人妻一区二区三区视频 | 91老女人 | 久久久久成人精品无码中文字幕 | 青草av在线 | 久草一本| 日本特黄视频 | 亚洲国产天堂 | 免费黄色视屏 | 好男人www在线视频 我们的2018在线观看免费高清 | 爱情岛论坛自拍亚洲品质极速最新章 | 天天婷婷 | 伊人久久激情 | 欧美日韩在线免费播放 | 人物动物互动39集免费观看 | 伊人春色av| 懂色aⅴ国产一区二区三区 亚洲欧美国产另类 |