suizhikuo

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

 

 

 

 

OpenDataSource
1.       操作SQL服务器数据,如SQL Server /Oracle等等
格式:
SELECT   top 10 *
FROM      OPENDATASOURCE(
         \'ProviderName\',
         \'Data Source=ServerName;User ID=LoginUser;Password=Password\'
         ).[DataBaseName].dbo.TableName
以上是以我公司数据库为,OrderMaster 是销售单表
如:
SELECT   top 10 *
FROM      OPENDATASOURCE(
         \'SQLOLEDB\',
         \'Data Source=globe01;User ID=xw_cai;Password=123\'
         ).[order].dbo.ordermaster
2.       操作Excel
格式:
SELECT *
FROM OpenDataSource( \'MICROSOFT.JET.OLEDB.4.0\',
 \'Data Source="Excel文件所存放的路径";User ID=;Password=;Extended properties=Excel 5.0\')...SheetName$
SheetName工作区名称,其工作区的名称的后缀$不能少
如:
SELECT *
FROM OpenDataSource( \'MICROSOFT.JET.OLEDB.4.0\',
 \'Data Source="G:/WorkEveryDay/DayDo/OrderList";User ID=;Password=;Extended properties=Excel 5.0\')...OrderList$
3.       操作Text文本文件
格式:
SELECT * FROM
OPENDATASOURCE(\'MICROSOFT.JET.OLEDB.4.0\',
\'Text;HDR=no;Database=存放Text文本文件路径\')...[TextName#txt]
TextName是文本文件名称,txt是文本文件后缀,其中#不能少,不能将#改为.也报错,格式TextName.txt是不正确,正确TextName#txt。Database=’/’最后一个/不能少。
例子:
SELECT * FROM
OPENDATASOURCE(\'MICROSOFT.JET.OLEDB.4.0\',
\'Text;HDR=no;Database=E:/Study/C#/Data/學習資料/Text/\')...[textName#txt]

 

分类:

技术点:

相关文章: