ODBC, OLEDB & 的底层协议有区别吗?网络

2022-01-23 00:00:00 odbc protocols sql-server ado.net oledb

使用典型系统之一(ODBC、OLEDB 或 ADO.NET)与 SQL Server 数据库通信时,底层基本协议是否相同?这些系统之间的所有差异基本上都只是客户端问题吗?

When communicating to a SQL Server database using one of the typical systems, ODBC, OLEDB or ADO.NET, is the underlying basic protocol the same? Are all the differences between these systems basically just client side issues?

这只是 TDS(表格数据流)传输的不同风格吗?

Is this all just different flavors of TDS (Tabular Data Stream) transfer?

[MS-TDS]:表格数据流协议规范

或者有不同的方式与数据库服务器通信,并且这些协议之间存在根本区别?

Or there actual different ways to talk to the database server and there are fundamental difference between these protocols?

推荐答案

ODBC、OLE DB 和 ADO.NET 是用于与数据库通信的不同 API/框架.例如,ADO 以连接方式处理数据,主要使用服务器端游标,而 ADO.NET 以断开方式操作,快速从服务器拉取数据并将其缓存在 ADO.NET 数据集对象中的客户端.

ODBC, OLE DB and ADO.NET are different API/frameworks for communicating with the database. For example, ADO works on data in a connected fashion, primarily using server-side cursors, whereas ADO.NET operates on a disconnected fashion, pulling the data from the server quickly and caching it at the client in ADO.NET dataset objects.

在底层,每一个都通过 TDS 向 SQL Server 发送 SQL 命令,并通过 TDS 接收返回的数据.OLE DB 允许您接近 TDS 以提高性能,而 ODBC 进行了很多抽象,以便为许多不同的数据源提供一致的接口.

Under the hood, each of these is sending SQL commands to SQL Server over TDS, and receiving data back via TDS. OLE DB allows you to get close to TDS for performance, whereas ODBC abstracts a lot to provide a consistent interface to many different data sources.

相关文章