SQL 服务器驱动程序和 SQL 服务器网络接口之间的关系

Relationship between SQL Server drivers and SQL Server Network Interface

学习 SQL 服务器架构时,我对 client\server 组件之间的术语和关系感到困惑。我希望几个相关问题的答案能帮助我更好地理解事情:

  1. here, ADO.NET Server driver is a C# implementation of the TDS protocol. As explained 所述,使用 SqlConnection 意味着使用 ADO.NET。那么,服务器网络接口 (SNI) 在哪里发挥作用呢?继续SqlConnection的例子:调用new SqlConnection时是否建立了SNI?
  2. This 是维基百科关于 OLE DB 与 ODBC 的关系的说法:

OLE DB providers are analogous to ODBC drivers, JDBC drivers, and ADO.NET data providers.

also

An OLE DB-ODBC bridge consists of an OLE DB Provider which uses the services of an ODBC driver to connect to a target database. This provider translates OLE DB method calls into ODBC function calls.

我不确定为什么这些被认为是“类似的”,但无论如何:提供者 and/or 驱动程序在建立 SNI 和传输 TDS 数据包中的作用是什么?

  1. 我们再以SSMS为例:连接SQL服务器时,driver/provider用什么?建立连接时是否有传输TDS数据包?

这是我对SNI的理解:

  1. SNI 替换了 SQL 服务器 2000 中的 net-libraries 和 Windows 中包含的 Microsoft 数据访问组件 (MDAC)。
  2. SNI 将 TDS 数据包封装在标准通信协议中,例如 TCP\IP 或命名管道。
  3. 在客户端,SNI 是使用 SQL 本机客户端实现的。但是,Microsoft 现在建议使用 ODBC 驱动程序等替代方案,而不是 SQL Native Client,因为对 SQL Native Client 的支持将在 2012 年之后的 SQL Server 版本中停止。
  4. OLEDB 驱动程序和 ADO 驱动程序是遗留的,将被停用。
  5. 因此,从客户端来看,当与服务器建立连接时,SNI 协议层(SQL 服务器架构中的协议层)将确保 TDS 数据包封装在网络数据包。
  6. SQL 服务器根据所使用的协议侦听 TSQL 端点上的 TDS 数据包。 SNI 协议层的服务器端实现是将网络数据包解封装回 TDS 数据包的地方。
  7. 此外,数据库引擎中有网络库,它们将从 TDS 数据包中检索查询。
  8. 在客户端,SNI 由驱动程序实现,并由服务器上的 SNI 协议层提供便利。