SQL Server:本机客户端与ODBC之间的区别?

24

SQL Server原生客户端连接和ODBC连接有何区别?这两者的优缺点是什么?


对于那些只是想选择ODBC驱动程序而不是辩论ODBC vs OLEDB的人,请参见此处:https://dev59.com/wFkS5IYBdhLWcg3wzZTB#54206996 - MarredCheese
4个回答

19

什么?ODBC正式死了?有人可能需要让微软知道:

微软正在与ODBC对齐,以进行本地关系数据访问

从上面的链接中可以看出:

ODBC是本地关系数据访问的事实行业标准...

还有

商业版的Microsoft SQL Server,代号'Denali'将是最后一个支持OLE DB的版本

最后,

我们鼓励您在开发新版本和未来版本的应用程序时采用ODBC。 您不需要更改使用OLE DB的现有应用程序,因为它们将在Denali的整个生命周期内得到支持。虽然这使您有足够的时间在弃用生效之前更改应用程序,但您可能需要考虑将这些应用程序迁移到ODBC作为未来路线图的一部分。微软完全致力于使这个过渡尽可能顺利和轻松。

7
他们正在恢复使用OLEDB:https://blogs.msdn.microsoft.com/sqlnativeclient/2017/10/06/announcing-the-new-release-of-ole-db-driver-for-sql-server/ - serpah

5

ODBC 在底层数据库可能会改变但代码不需要改变的情况下很有用(假设 SQL 在不同技术之间保持不变)。你一天可以连接到 Oracle 数据库,下一天就切换到 SQL Server 数据库。缺点是你没有特定驱动程序所提供的优化。SQL Server Native 客户端驱动程序已被证明比仅使用标准 ODBC 驱动程序要快得多。


1
事实上是错误的。ODBC已经过时了。你所说的只是...现在你用OLEDB做什么,而不是用ODBC。 - TomTom
你是对的。我混淆了这些。对于造成的困惑,我很抱歉。 - Josh
“SQL Server本地客户端驱动程序已被证明比仅使用标准ODBC驱动程序要快得多。” 真的吗?在我们切换之前,我刚刚进行了测试。当我像这样建立连接:Driver={SQL Server}; 对于大量调用相同过程(超过20倍),它比Driver={SQL Server Native Client 10.0}; 稍微快一点。” - Brian White
@TomTom,证据呢?根据维基百科,在你发表评论的时候,最新版本只有两年历史。而一年前,下一个版本在Github上开始开发。 - Hi-Angel

4
SQL Server Native Client连接和ODBC连接有什么区别?
ODBC是一个标准化的API。
ODBC驱动程序是共享库,使用本机协议(如SQL Server共享内存或SQL Server TCP/IP)来实现ODBC接口。
换句话说,ODBC是一种抽象,使代码能够针对多个数据库技术工作。
它类似于Java的JDBC、Python的DB-API或GO的database/sql,只不过ODBC驱动程序使用C函数。此外,它们更经常在系统级别安装。
ODBC具有任何抽象的优缺点。
优点:使代码更灵活/可移植。
缺点:增加了性能开销并具有较少的功能。
听起来你知道你将使用SQL Server并且将始终使用SQL Server。
在这种情况下,如果有原生客户端库,我会使用它。

-1

SQL Server Native Client是一个单一的动态链接库(DLL),包含了Windows平台下的SQL OLE DB提供程序和SQL ODBC驱动程序。

SNAC 11是一个单一的动态链接库(DLL),包含了Windows平台下的SQL OLE DB提供程序和SQL ODBC驱动程序。它为使用本地代码API(ODBC、OLE DB和ADO)连接到Microsoft SQL Server 2005、2008、2008 R2和SQL Server 2012的应用程序提供运行时支持。Linux平台上还提供了一个独立的SQL ODBC驱动程序。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接