2017-01-02 58 views
0

瞭解SQL Server體系結構時,我對客戶機\服務器組件之間的術語和關係感到困惑。我希望回答幾個有關問題將有助於我更好地理解事情:SQL Server驅動程序和SQL Server網絡接口之間的關係

  1. 如前所述here,ADO.NET Server驅動程序是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橋由它使用ODBC驅動程序的 服務連接到目標數據庫的OLE DB提供程序。此提供程序將OLE DB方法調用轉換爲ODBC函數調用。

我不知道爲什麼這些被認爲是「類似的」,但無論如何:提供商和/或驅動程序在建立SNI和傳輸TDS數據包方面的作用是什麼?

  1. 讓我們以SSMS爲例:連接到SQL Server時使用什麼驅動程序/提供程序?建立連接時是否存在傳輸的TDS數據包?

回答

0

這是我的SNI的理解:

  1. 的SNI取代了SQL Server 2000和Microsoft數據訪問組件(MDAC),這是包含在Windows中發現的網絡庫。
  2. SNI將TDS包封裝在標準通信協議(如TCP \ IP或命名管道)內。
  3. 在客戶端,SNI是使用SQL Native CLient實現的。但是,Microsoft現在建議使用諸如ODBC驅動程序等替代SQL Native Client的替代方案,因爲SQL Native Client的支持將在2012年以後停止供SQL Server版本使用。
  4. OLEDB驅動程序和ADO驅動程序是遺留的,將要停用。因此,從客戶端,當與服務器建立連接時,SNI協議層(SQL Server體系結構內的協議層)將確保TDS數據包封裝在網絡數據包中。
  5. SQL Server根據使用的協議偵聽TSQL端點上的TDS數據包。 SNI協議層的服務器端實現是將網絡數據包解封裝回TDS數據包的位置。
  6. 此外,數據庫引擎中還有網絡庫,它們將從TDS數據包中檢索查詢。
  7. 在客戶端,SNI由驅動程序實現並由服務器上的SNI協議層實現。