SQL Server跨服务器查询的实现方法,OpenDataSource
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