【问题标题】:Relationship between SQL Server drivers and SQL Server Network InterfaceSQL Server 驱动程序和 SQL Server 网络接口之间的关系
【发布时间】:2017-01-02 23:47:50
【问题描述】:

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

  1. here 所述,ADO.NET 服务器驱动程序是 TDS 协议的 C# 实现。正如here 所解释的,使用SqlConnection 意味着使用ADO.NET。那么,服务器网络接口 (SNI) 在哪里发挥作用?继续SqlConnection的例子:调用new SqlConnection时是否建立了SNI?
  2. This 是维基百科关于 OLE DB 与 ODBC 的关系:

OLE DB 提供程序类似于 ODBC 驱动程序、JDBC 驱动程序和 ADO.NET 数据提供者。

还有also:

OLE DB-ODBC 桥由一个 OLE DB 提供程序组成,该提供程序使用 ODBC 驱动程序的服务以连接到目标数据库。这 提供程序将 OLE DB 方法调用转换为 ODBC 函数调用。

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

  1. 我们再以SSMS为例:连接SQL Server时使用什么驱动程序/提供程序?建立连接时是否有 TDS 数据包在传输?

【问题讨论】:

    标签: sql-server client-server


    【解决方案1】:

    这是我对 SNI 的理解:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 2022-08-19
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多