ODBC驱动程序的驱动程序之间的差异

时间:2016-09-11 19:47:01

标签: sql-server odbc dsn

我在SQL Server 2016中使用Windows 10 64位专业版为我的数据库设置了系统DSN(64位)。当我被要求选择驱动程序来设置数据源时,有以下选择:

  • 用于SQL Server的ODBC驱动程序13
  • SQL Server
  • SQL Server Native Client 11.0
  • SQL Server Native Client RDA 11.0

似乎我可以使用所有这些驱动程序设置数据源。那么我应该在速度和效率方面选择哪一个?它们之间的区别是什么?

谢谢,

杰森

5 个答案:

答案 0 :(得分:27)

SQL Server的ODBC驱动程序

ODBC是用C,C ++,PHP,Python等编写的用于连接SQL Server的应用程序的主要本机数据访问API。

它广泛用于数据集成场景。

此外,如果您在Windows上开发应用程序并将其部署到Linux,它也是首选。

SQL Server

SQL Server驱动程序的全名是SQL Server ODBC Driver。它是sql 2000以来的一个老驱动程序。 您可以使用它连接到SQL Server 2016,但您将无法访问SQL Server 2016的新功能

SQL Server Native Client

SQL Server Native Client包含SQL OLE DB提供程序和SQL ODBC驱动程序,以支持与SQL Server的本机连接,并支持sql server 2016的所有功能。 它是Windows环境中最好的

SQL Server Native Client RDA

Microsoft SQL Server Compact 3.5中的远程数据访问(RDA)允许应用程序从远程SQL Server数据库表访问数据。

它还可以在SQL Server Compact 3.5中存储,读取和更新该数据,然后更新原始SQL Server表。

将来的版本中将删除RDA,因此请避免使用它。

所以根据上面的标准选择sql驱动程序。

答案 1 :(得分:3)

Microsoft ODBC Driver for SQL Server(MSODBCSQL)

此驱动程序是announced in 2013的后继驱动程序,它是SQL Server Native Client的后继驱动程序。它与最新的SQL Server版本一起安装(2016和2017年为13)。也有standalone installersDriver history for Microsoft SQL Server推荐此驱动程序优先于ODBC的“ SQL Server”和“ SQL Server Native Client”。在“ SQL Server Native Client”上添加了功能:支持驱动程序的连接池,连接弹性和异步执行(轮询)。您可以在Microsoft ODBC Driver For SQL Server Team blog上关注当前的发展。

Driver={ODBC Driver XX for SQL Server}(安装版本为XX。请参见System Requirements, Installation, and Driver Files。)

SQL Server Native Client(SQLNCLI)

随SQL Server 2005一起提供,并且随SQL Server(也installable via sqlncli.msi from SQL Server feature packs)一起提供。在“ SQL Server”上增加了功能:多个活动结果集(MARS),用户定义的数据类型(UDT),查询通知,快照隔离和XML数据类型支持。

Driver={SQL Server Native Client}(SQL Server 2005)
Driver={SQL Server Native Client 10.0}(SQL Server 2008)
Driver={SQL Server Native Client 11.0}(SQL Server 2012及更高版本)

SQL Server Native Client RDA

远程数据访问(RDA)是SQL Server Compact的一项功能,它“从远程SQL Server数据库表中允许应用程序访问数据”。我找不到太多文档,但是看来该驱动程序旨在支持Compact Edition的复制方案。

SQL Server(SQLSRV32)

包含在Microsoft Data Access Components (MDAC)中(现在称为Windows数据访问组件(WDAC))。默认情况下,该驱动程序在Windows上可用(从98和NT 4.0开始)。

Driver={SQL Server}

答案 2 :(得分:2)

SQL Server本机客户端与ODBC的.NET Framework数据提供程序

对于SQL Server本机客户端的最新版本,Microsoft®SQLServer®2012本机客户端似乎也称为SQL Server本机客户端11.0。 在SQL Server 2014或更高版本中不支持新功能

  

请注意,SNAC 11不支持SQL Server发行的功能   2014和SQL Server 2016作为SQL Server的一部分不可用   2012,例如透明网络IP解析,始终加密,   Azure AD身份验证,批量复制和表值参数。

https://blogs.msdn.microsoft.com/sqlreleaseservices/snac-lifecycle-explained/

您必须使用Microsoft®ODBC Driver 11或SQL Server 13才能享受SQL Server 2014或更高版本中的新功能

答案 3 :(得分:1)

要检查已安装的驱动程序,请启动Powershell(32/64位-取决于要使用的驱动程序体系结构)并运行

OLEDB

(New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION

ODBC

Get-OdbcDriver | select Name,Platform

概述

https://docs.microsoft.com/en-us/sql/connect/connect-history#odbc

有三种不同的SQL Server Microsoft ODBC驱动程序代。

  • 第一个“ SQL Server” ODBC驱动程序仍作为Windows数据访问组件的一部分提供。 不建议将此驱动程序用于新开发。
  • 从SQL Server 2005开始,SQL“ Server Native Client 10.x / 11.x / 12.x”包括ODBC接口,并且是SQL Server 2005到SQL Server 2012附带的ODBC驱动程序。 strong>不建议将该驱动程序用于新开发。
  • 在SQL Server 2012之后,用于SQL Server的Microsoft ODBC驱动程序是已更新的驱动程序,并且具有最新的服务器功能

SQL Server

这是MDAC软件包(https://support.microsoft.com/en-us/help/899456)中的旧版本,而该软件包现在(自XP / 2003起)随Windows-OS一起提供。 https://docs.microsoft.com/en-us/sql/connect/connect-history#mdacwdac-releases

https://docs.microsoft.com/en-us/sql/relational-databases/native-client/applications/updating-an-application-to-sql-server-native-client-from-mdac

  

...从Windows Vista开始,数据访问组件现在称为Windows数据访问组件或Windows DAC。尽管两者都提供对SQL Server数据库的本机数据访问,但是 SQL Server本机客户端经过专门设计,以公开SQL Server 2005的新功能(9.x),同时保持向后兼容性。早期版本。


SQL Server本机客户端

https://docs.microsoft.com/en-us/sql/connect/connect-history#odbc

  

SQL Server Native Client是用于OLE DB和ODBC的独立库。 SQL Server Native Client(通常缩写为SNAC)已包含在SQL Server 2005到2012中。SQLServer Native Client可用于需要利用SQL Server 2005到SQL Server 2012引入的新功能的应用程序。 >。 (对于SQL Server中的这些新功能,未更新Microsoft / Windows数据访问组件。)对于SQL Server 2012以后的新功能,将不会更新SQL Server本机客户端。 如果要继续使用新的SQL Server功能,请切换到SQL Server的Microsoft ODBC驱动程序或SQL Server的Microsoft OLE DB驱动程序。


SQL Server本机客户端RDA

与.NET Compact Framework 3.5兼容


用于SQL Server的ODBC驱动程序

https://docs.microsoft.com/en-us/sql/connect/connect-history#odbc

  

在SQL Server 2012之后,已经开发了用于SQL Server的主要ODBC驱动程序,并已发布为用于SQL Server的Microsoft ODBC驱动程序。


MSOLEDBSQL-用于SQL Server的Microsoft OLE DB驱动程序

此驱动程序是deprecated,后来是undeprecated

https://docs.microsoft.com/en-us/sql/connect/oledb/oledb-driver-for-sql-server#3-microsoft-ole-db-driver-for-sql-server-msoledbsql

  

新的OLE DB提供程序称为用于SQL Server的Microsoft OLE DB驱动程序(MSOLEDBSQL)。 新的提供程序将随着最新的服务器功能而更新。要在现有应用程序中使用适用于SQL Server的新的Microsoft OLE DB驱动程序,您应该计划转换来自SQLOLEDB或SQLNCLI的连接字符串,到MSOLEDBSQL。   https://blogs.msdn.microsoft.com/sqlnativeclient/2018/03/30/released-microsoft-ole-db-driver-for-sql-server/


摘要

尝试使用面向未来的驱动程序:

答案 4 :(得分:1)

如本文前面所述,使用更高版本的ODBC驱动程序(13及更高版本),您可以访问SQL Server 2014、2016等中可用的更高级功能。

但是,关于ODBC版本17驱动程序是否支持SQL Server 2012的Microsoft帖子相互矛盾。

此链接表明您必须对SQL Server 2012使用ODBC 13: SQL Server Driver Versions

但是,如果您查看ODBC版本17的下载,则表明它支持SQL Server 2012(和旧版本的SQL Server)。

Microsoft® ODBC Driver 17 for SQL Server® - Windows, Linux, & macOS

ODBC Driver - Details section

因此,也许ODBC版本17驱动程序(至少)与SQL Server的较早版本向后兼容。

希望这会有所帮助!

乔恩