zoukankan      html  css  js  c++  java
  • 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:Financeaccount.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]

     

  • 相关阅读:
    php详解和优化
    接口
    抽象类
    对象转型
    面向对象2
    Super关键字
    Object类介绍
    有效处理java异常的三个原则
    this关键字
    equals方法
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/7550428.html
Copyright © 2011-2022 走看看