SQL Server跨服务器查询的实现方法


  本文标签: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