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