zoukankan      html  css  js  c++  java
  • sqlserver OpenRowSet 对应的三种数据库驱动

    在使用sqlserver数据库的OpenRowSet函数时,会遇到三种驱动方式:

    1. MSDASQL驱动
    SELECT TOP 10 *
    FROM OPENROWSET('MSDASQL', 'DRIVER={SQL Server};SERVER=xxx;UID=xx;PWD=xxx;', 'select * from AdventureWorks.HumanResources.Employee')

    2. SQLNCLI驱动
    SELECT TOP 10 *
    FROM OPENROWSET('SQLNCLI', 'SERVER=xxx;UID=xx;PWD=xxxxx;', 'select * from AdventureWorks.HumanResources.Employee')

    3. SQLOLEDB驱动
    SELECT TOP 10 *
    FROM OpenRowSet('SQLOLEDB', 'xxx'; 'xx'; 'xxx', AdventureWorks.HumanResources.Employee)

    先看一下定义

    MSDASQL:Microsoft OLE DB Provider for ODBC Drivers

    允许在 OLEDB 和 ADO(它在内部使用 OLEDB)上构建的应用程序通过 ODBC 驱动程序访问数据源的技术。
    MSDASQL 是用于连接到 ODBC(而不是数据库)的 OLEDB 访问接口。

    SQLOLEDB :Microsoft OLE DB Provider for SQL Server,可以看出来SQLOLEDB是连接到数据库sqlserver,而不是ODBC驱动

    SQLNCLI10(SQLNCLI):SQL Server Native Client 10.0

    SQL Server Native Client的定义:

    SQL Server Native Client 是在 SQL Server 2005 中引入的用于 OLE DB 和 ODBC 的独立数据访问应用程序编程接口 (API)。SQL Server Native Client 将 SQL OLE DB 访问接口和 SQL ODBC 驱动程序组合成一个本机动态链接库 (DLL)。为了利用在 SQL Server 2005以及以上的版本的新功能,比如多个活动结果集 (MARS)、查询通知、用户定义类型 (UDT) 或新的 xml 数据类型,那些使用 ActiveX Data Objects (ADO) 的现有应用程序应当使用 SQL Server Native Client OLE DB 访问接口作为其数据访问接口。

    如果不需要使用在 SQL Server 2005 及其以后的版本中引入的任何新功能,则不需要使用 SQL Server Native Client OLE DB 访问接口;您可以继续使用当前数据访问接口(通常是 SQLOLEDB)。如果要增强现有应用程序的功能,并且需要使用在 SQL Server 2005 及其以后的版本中引入的新功能,则应当使用 SQL Server Native Client OLE DB 访问接口。

    附上 OPENROWSET 语法格式

    OPENROWSET 
    ( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password' 
       | 'provider_string' } 
          , {   [ catalog. ] [ schema. ] object 
           | 'query' 
         } 
       | BULK 'data_file' , 
           { FORMATFILE = 'format_file_path' [ <bulk_options> ]
           | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
    } ) 
    
    <bulk_options> ::=
       [ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] 
       [ , ERRORFILE = 'file_name' ]
       [ , FIRSTROW = first_row ] 
       [ , LASTROW = last_row ] 
       [ , MAXERRORS = maximum_errors ] 
       [ , ROWS_PER_BATCH = rows_per_batch ] 

    [ , ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) [ UNIQUE ]

    参照:http://www.cnblogs.com/w-y-f/archive/2012/05/07/2488474.html

  • 相关阅读:
    Thinkphp3.2.3关于开启DEBUG正常,关闭DEBUG就报错模版无法找到,页面错误!请稍后再试~
    Apache 工作模式的正确配置
    TIME_WAIT 你好!
    对称加密实现重要日志上报Openresty接口服务
    阿里nas挂载错误
    机器装多个版本php,并安装redis插件报错【已解决】
    find 删除文件
    从头认识java-6.7 初始化与类的加载
    从头认识java-6.6 final(4)-类与忠告
    从头认识java-6.6 final(3)-方法
  • 原文地址:https://www.cnblogs.com/wanglg/p/4166557.html
Copyright © 2011-2022 走看看