ODBC 驱动程序的驱动程序之间的差异
Differences Between Drivers for ODBC Drivers
我在 SQL 服务器 2016 中使用 Windows 10 64 位专业版为我的数据库设置系统 DSN(64 位)。当我被要求选择驱动程序来设置数据源时,有以下选择:
- SQL 服务器的 ODBC 驱动程序 13
- SQL 服务器
- SQL 服务器本机客户端 11.0
- SQL 服务器本机客户端 RDA 11.0
看来我可以使用所有这些驱动程序设置数据源。那么从速度和效率上应该选择哪一个呢?它们有什么区别?
谢谢,
贾森
ODBC Driver 用于 SQL 服务器
ODBC 是主要的本机数据访问 API,适用于用 C、C++、PHP、Python 和其他语言编写的应用程序,用于连接到 SQL 服务器。
广泛应用于数据集成场景
此外,如果您在 Windows 上开发应用程序并将其部署到 Linux,则首选。
SQL服务器
SQL服务器Driver的全称是SQL服务器ODBCDriver。这是 sql 2000 年以来的旧 driver。
您可以使用它连接到 SQL Server 2016,但您将无法访问 SQL Server 2016
的新特性和功能
SQL 服务器本机客户端
SQL 服务器本机客户端包含 SQL OLE DB 提供程序和 SQL ODBC driver 以支持与 SQL 服务器的本机连接并支持sql 服务器 2016 的所有功能。
在windows环境
中是最好的
SQL 服务器本机客户端 RDA
Microsoft SQL Server Compact 3.5 中的远程数据访问 (RDA) 允许应用程序从远程 SQL 服务器数据库 table 访问数据。
它还可以在 SQL Server Compact 3.5 中存储、读取和更新该数据,然后更新原始 SQL 服务器 table。
RDA 将在未来的版本中删除,因此避免使用它。
所以根据以上条件选择sqldriver
SQL 服务器本机客户端与 .NET Framework ODBC 数据提供程序
似乎对于 SQL Server Native 客户端的最新版本,Microsoft® SQL Server® 2012 Native Client 也被命名为 SQL Server native client 11.0。
不支持 SQL Server 2014 或更高版本
中的新功能
Note that SNAC 11 does not support features released with SQL Server
2014 and SQL Server 2016 that were not available as part of SQL Server
2012, such as Transparent Network IP Resolution, Always Encrypted,
Azure AD Authentication, Bulk Copy and Table Value Parameters.
https://blogs.msdn.microsoft.com/sqlreleaseservices/snac-lifecycle-explained/
您必须为 SQL 服务器使用 Microsoft® ODBC 驱动程序 11 或 13 才能享受 SQL 服务器 2014 或更高版本
中的新功能
Microsoft ODBC Driver for SQL Server (MSODBCSQL)
这个 driver 是 announced in 2013 as the successor to SQL Server Native Client. It is installed with recent SQL Server versions. There are standalone installers for clients. Driver history for Microsoft SQL Server recommends this driver in preference to "SQL Server" and "SQL Server Native Client" for ODBC. Added features over "SQL Server Native Client": driver-aware connection pooling, connection resiliency, asynchronous execution (polling), support for Always Encrypted, recent SQL Server compatibility (including Azure SQL), and more supported operating systems (including Linux and macOS). You can follow current development on the SQL Server Blog (with previous posts on the SQLNCli team blog).
Driver={ODBC Driver XX for SQL Server}
(XX
替换为 driver 版本。参见 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). Added features over "SQL Server": Multiple active result sets (MARS), user-defined data types (UDT), query notifications, snapshot isolation, and XML data type support. The version for SQL Server 2008 also added support for the new date and time types。
Driver={SQL Server Native Client}
(SQL 服务器 2005)
Driver={SQL Server Native Client 10.0}
(SQL 服务器 2008)
Driver={SQL Server Native Client 11.0}
(SQL 服务器 2012 及更高版本)
SQL Server Native Client RDA
远程数据访问 (RDA) 是一项 SQL 服务器紧凑型功能,它“允许应用程序从远程 SQL 服务器数据库 table 访问数据。”我找不到太多文档,但似乎 driver 旨在支持 Compact Edition 的复制方案。
SQL 服务器 (SQLSRV32)
包含在 Microsoft Data Access Components (MDAC) 中(现在称为 Windows 数据访问组件 (WDAC))。此 driver 默认在 Windows 上可用(自 98 和 NT 4.0 起)。
Driver={SQL Server}
要检查您安装了哪些 driver,请启动 powershell(32/64 位 - 取决于您要使用的 driver 架构)和 运行
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 服务器有三代不同的 Microsoft ODBC drivers。
- 第一个 "SQL Server" ODBC driver 仍然作为 Windows 数据访问组件的一部分提供。 不建议使用此 driver 进行新开发。
- 从 SQL Server 2005 开始,SQL "Server Native Client 10.x/11.x/12.x" 包括一个 ODBC 接口,并且是 SQL Server 2005 附带的 ODBC driver 到SQL Server 2012。不建议使用此driver进行新开发。
- 在 SQL Server 2012 之后,SQL Server 的 Microsoft ODBC Driver 是 更新了最新服务器功能的 driver前进.
SQL 服务器
它是 MDAC-package (https://support.microsoft.com/en-us/help/899456) 中的旧版本,现在(自 XP/2003 起)随 Windows-OS 一起提供。
https://docs.microsoft.com/en-us/sql/connect/connect-history#mdacwdac-releases
...starting with Windows Vista, the data access components are now called Windows Data Access Components, or Windows DAC). Although both provide native data access to SQL Server databases, SQL Server Native Client has been specifically designed to expose the new features of SQL Server 2005 (9.x), while at the same time maintaining backward compatibility with earlier versions.
SQL 服务器本机客户端
https://docs.microsoft.com/en-us/sql/connect/connect-history#odbc
SQL Server Native Client is a stand-alone library that is used for both OLE DB and ODBC. SQL Server Native Client (often abbreviated SNAC) was included in SQL Server 2005 through 2012. SQL Server Native Client can be used for applications that need to take advantage of new features introduced in SQL Server 2005 through SQL Server 2012. (Microsoft/Windows Data Access Components are not updated for these new features in SQL Server.) For new features beyond SQL Server 2012, SQL Server Native Client will not be updated. Switch to the Microsoft ODBC Driver for SQL Server or the Microsoft OLE DB Driver for SQL Server if you want to take advantage of new SQL Server features going forward.
SQL 服务器本机客户端 RDA
附带 .NET Compact Framework 3.5
ODBC Driver 用于 SQL 服务器
https://docs.microsoft.com/en-us/sql/connect/connect-history#odbc
After SQL Server 2012, the primary ODBC driver for SQL Server has been developed and released as the Microsoft ODBC Driver for SQL Server.
MSOLEDBSQL - SQL 服务器
的 Microsoft OLE DB Driver
这个 driver 已经 deprecated and later undeprecated:
The new OLE DB provider is called the Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL). The new provider will be updated with the most recent server features going forward. To use the new Microsoft OLE DB Driver for SQL Server in existing applications, you should plan to convert your connection strings from SQLOLEDB or SQLNCLI, to MSOLEDBSQL.
https://blogs.msdn.microsoft.com/sqlnativeclient/2018/03/30/released-microsoft-ole-db-driver-for-sql-server/
总结
尝试使用未来证明drivers:
如本文前面所述 post,更高版本的 ODBC 驱动程序(13 及更高版本)使您可以访问 SQL Server 2014、2016 等中可用的更高级功能。
但是,关于 ODBC 版本 17 驱动程序是否支持 SQL Server 2012,Microsoft post 存在冲突。
这 link 表示您必须为 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 版本 17 驱动程序(至少)向后兼容旧版本的 SQL 服务器。
希望对您有所帮助!
乔恩
我在 SQL 服务器 2016 中使用 Windows 10 64 位专业版为我的数据库设置系统 DSN(64 位)。当我被要求选择驱动程序来设置数据源时,有以下选择:
- SQL 服务器的 ODBC 驱动程序 13
- SQL 服务器
- SQL 服务器本机客户端 11.0
- SQL 服务器本机客户端 RDA 11.0
看来我可以使用所有这些驱动程序设置数据源。那么从速度和效率上应该选择哪一个呢?它们有什么区别?
谢谢,
贾森
ODBC Driver 用于 SQL 服务器
ODBC 是主要的本机数据访问 API,适用于用 C、C++、PHP、Python 和其他语言编写的应用程序,用于连接到 SQL 服务器。
广泛应用于数据集成场景
此外,如果您在 Windows 上开发应用程序并将其部署到 Linux,则首选。
SQL服务器
SQL服务器Driver的全称是SQL服务器ODBCDriver。这是 sql 2000 年以来的旧 driver。 您可以使用它连接到 SQL Server 2016,但您将无法访问 SQL Server 2016
的新特性和功能SQL 服务器本机客户端
SQL 服务器本机客户端包含 SQL OLE DB 提供程序和 SQL ODBC driver 以支持与 SQL 服务器的本机连接并支持sql 服务器 2016 的所有功能。 在windows环境
中是最好的SQL 服务器本机客户端 RDA
Microsoft SQL Server Compact 3.5 中的远程数据访问 (RDA) 允许应用程序从远程 SQL 服务器数据库 table 访问数据。
它还可以在 SQL Server Compact 3.5 中存储、读取和更新该数据,然后更新原始 SQL 服务器 table。
RDA 将在未来的版本中删除,因此避免使用它。
所以根据以上条件选择sqldriver
SQL 服务器本机客户端与 .NET Framework ODBC 数据提供程序
似乎对于 SQL Server Native 客户端的最新版本,Microsoft® SQL Server® 2012 Native Client 也被命名为 SQL Server native client 11.0。 不支持 SQL Server 2014 或更高版本
中的新功能Note that SNAC 11 does not support features released with SQL Server 2014 and SQL Server 2016 that were not available as part of SQL Server 2012, such as Transparent Network IP Resolution, Always Encrypted, Azure AD Authentication, Bulk Copy and Table Value Parameters.
https://blogs.msdn.microsoft.com/sqlreleaseservices/snac-lifecycle-explained/
您必须为 SQL 服务器使用 Microsoft® ODBC 驱动程序 11 或 13 才能享受 SQL 服务器 2014 或更高版本
中的新功能Microsoft ODBC Driver for SQL Server (MSODBCSQL)
这个 driver 是 announced in 2013 as the successor to SQL Server Native Client. It is installed with recent SQL Server versions. There are standalone installers for clients. Driver history for Microsoft SQL Server recommends this driver in preference to "SQL Server" and "SQL Server Native Client" for ODBC. Added features over "SQL Server Native Client": driver-aware connection pooling, connection resiliency, asynchronous execution (polling), support for Always Encrypted, recent SQL Server compatibility (including Azure SQL), and more supported operating systems (including Linux and macOS). You can follow current development on the SQL Server Blog (with previous posts on the SQLNCli team blog).
Driver={ODBC Driver XX for SQL Server}
(XX
替换为 driver 版本。参见 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). Added features over "SQL Server": Multiple active result sets (MARS), user-defined data types (UDT), query notifications, snapshot isolation, and XML data type support. The version for SQL Server 2008 also added support for the new date and time types。
Driver={SQL Server Native Client}
(SQL 服务器 2005)
Driver={SQL Server Native Client 10.0}
(SQL 服务器 2008)
Driver={SQL Server Native Client 11.0}
(SQL 服务器 2012 及更高版本)
SQL Server Native Client RDA
远程数据访问 (RDA) 是一项 SQL 服务器紧凑型功能,它“允许应用程序从远程 SQL 服务器数据库 table 访问数据。”我找不到太多文档,但似乎 driver 旨在支持 Compact Edition 的复制方案。
SQL 服务器 (SQLSRV32)
包含在 Microsoft Data Access Components (MDAC) 中(现在称为 Windows 数据访问组件 (WDAC))。此 driver 默认在 Windows 上可用(自 98 和 NT 4.0 起)。
Driver={SQL Server}
要检查您安装了哪些 driver,请启动 powershell(32/64 位 - 取决于您要使用的 driver 架构)和 运行
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 服务器有三代不同的 Microsoft ODBC drivers。
- 第一个 "SQL Server" ODBC driver 仍然作为 Windows 数据访问组件的一部分提供。 不建议使用此 driver 进行新开发。
- 从 SQL Server 2005 开始,SQL "Server Native Client 10.x/11.x/12.x" 包括一个 ODBC 接口,并且是 SQL Server 2005 附带的 ODBC driver 到SQL Server 2012。不建议使用此driver进行新开发。
- 在 SQL Server 2012 之后,SQL Server 的 Microsoft ODBC Driver 是 更新了最新服务器功能的 driver前进.
SQL 服务器
它是 MDAC-package (https://support.microsoft.com/en-us/help/899456) 中的旧版本,现在(自 XP/2003 起)随 Windows-OS 一起提供。 https://docs.microsoft.com/en-us/sql/connect/connect-history#mdacwdac-releases
...starting with Windows Vista, the data access components are now called Windows Data Access Components, or Windows DAC). Although both provide native data access to SQL Server databases, SQL Server Native Client has been specifically designed to expose the new features of SQL Server 2005 (9.x), while at the same time maintaining backward compatibility with earlier versions.
SQL 服务器本机客户端
https://docs.microsoft.com/en-us/sql/connect/connect-history#odbc
SQL Server Native Client is a stand-alone library that is used for both OLE DB and ODBC. SQL Server Native Client (often abbreviated SNAC) was included in SQL Server 2005 through 2012. SQL Server Native Client can be used for applications that need to take advantage of new features introduced in SQL Server 2005 through SQL Server 2012. (Microsoft/Windows Data Access Components are not updated for these new features in SQL Server.) For new features beyond SQL Server 2012, SQL Server Native Client will not be updated. Switch to the Microsoft ODBC Driver for SQL Server or the Microsoft OLE DB Driver for SQL Server if you want to take advantage of new SQL Server features going forward.
SQL 服务器本机客户端 RDA
附带 .NET Compact Framework 3.5
ODBC Driver 用于 SQL 服务器
https://docs.microsoft.com/en-us/sql/connect/connect-history#odbc
After SQL Server 2012, the primary ODBC driver for SQL Server has been developed and released as the Microsoft ODBC Driver for SQL Server.
MSOLEDBSQL - SQL 服务器
的 Microsoft OLE DB Driver这个 driver 已经 deprecated and later undeprecated:
The new OLE DB provider is called the Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL). The new provider will be updated with the most recent server features going forward. To use the new Microsoft OLE DB Driver for SQL Server in existing applications, you should plan to convert your connection strings from SQLOLEDB or SQLNCLI, to MSOLEDBSQL. https://blogs.msdn.microsoft.com/sqlnativeclient/2018/03/30/released-microsoft-ole-db-driver-for-sql-server/
总结
尝试使用未来证明drivers:
如本文前面所述 post,更高版本的 ODBC 驱动程序(13 及更高版本)使您可以访问 SQL Server 2014、2016 等中可用的更高级功能。
但是,关于 ODBC 版本 17 驱动程序是否支持 SQL Server 2012,Microsoft post 存在冲突。
这 link 表示您必须为 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 版本 17 驱动程序(至少)向后兼容旧版本的 SQL 服务器。
希望对您有所帮助!
乔恩