SQL Server跨服務器查詢的實現方法
SQL Server跨服務器查詢的方法我們經常需要用到,下面就為您介紹兩種SQL Server跨服務器查詢的方法,如果您感興趣的話,不妨一看。
SQL Server跨服務器查詢方法一:
用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
SQL Server跨服務器查詢方法二(也可以在企業管理器里添加 linkServer):
sp_addlinkedserver
創建一個鏈接的服務器,使其允許對分布式的、針對 OLE DB 數據源的異類查詢進行訪問。在使用 sp_addlinkedserver 創建鏈接的服務器之后,此服務器就可以執行分布式查詢。如果鏈接服務器定義為 Microsoft? SQL Server?,則可執行遠程存儲過程。
語法
sp_addlinkedserver [ @server = ] 'server'
[ , [ @srvproduct = ] 'product_name' ]
[ , [ @provider = ] 'provider_name' ]
[ , [ @datasrc = ] 'data_source' ]
[ , [ @location = ] 'location' ]
[ , [ @provstr = ] 'provider_string' ]
[ , [ @catalog = ] 'catalog' ]
權限
執行許可權限默認授予 sysadmin 和 setupadmin 固定服務器角色的成員。
簡單示例:
//創建linkServer
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','服務器名'
//登陸linkServer
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用戶名','密碼'
//查詢linkServer的數據庫DataBaseA的表TableA
Select * From srv_lnk.DataBaseA.dbo.TableA
//List the tables in the linked server
EXEC sp_tables_ex txtsrv
【編輯推薦】