野声

Hey, 野声!

谁有天大力气可以拎着自己飞呀
twitter
github

SQLServer 不同 ODBC 驅動的區別

使用 pyodbc + sqlalchemy 連接 SQLServer 資料庫的時候遇到一個報錯: [IM002] [Microsoft][ODBC 驅動程式管理器] 未發現資料來源名稱並且未指定預設驅動程式 (0) (SQLDriverConnect)

查閱 sqlalchemy mssql+pyodbc 資料庫文件 後發現:

需要裝 ODBC 驅動。並且如果你要是用 hostname 方式來連接資料庫的話,還需要指定驅動名字,但是發現有好多種 driver,一個 driver 還有不同的名字。於是研究了一番。

怎麼這麼多驅動#

引用並重新編輯一下 Microsoft SQL Server 的驅動程式歷史記錄 - SQL Server | Microsoft Docs 中一段很清晰的描述:

有三代不同的 Microsoft ODBC Driver for SQL Server。

  • 第一代 “SQL Server” ODBC 驅動程式仍作為 Windows Data Access 組件 的一部分提供。對於新開發的程式,不建議使用此驅動程式。
  • 從 SQL Server 2005 開始,SQL Server Native Client 包含一個 ODBC 介面,並且它是 SQL Server 2005 至 SQL Server 2012 中隨附的 ODBC 驅動程式。 對於新開發,也不建議使用此驅動程式。
  • 在 SQL Server 2012 之後,Microsoft ODBC Driver for SQL Server 驅動程式隨最新的伺服器功能進行更新。

SQL Server Native Client#

SQL Server 2005 引入了 SQL Server Native Client 的支持,可用於 ODBC 的連接。

SQL Server 2005 至 SQL Server 2012 都在進行 SQL Server Native Client(通常縮寫為 SNAC)的開發。SQL Server Native Client 10.0 跟著 SQL Server 2008 一起發版。SQL Server Native Client 11.0 跟著 SQL Server 2012 一起發版。

可以在這兒下載到所有的歷史版本:Download SQL Server Native Client - ConnectionStrings.com

想使用的話找到最新版的安裝就行,驅動都是向前相容的。需要注意的就是不同的 SQLServer 版本設定的驅動名字:

  • Driver={SQL Server Native Client} (SQL Server 2005)
  • Driver={SQL Server Native Client 10.0} (SQL Server 2008)
  • Driver={SQL Server Native Client 11.0} (SQL Server 2012 及之後)

但是微軟在 13 年宣布了新版的 ODBC Driver,也就是下面這個。在 17 年放棄了對 SNAC 的開發,被下面這個驅動取代,新版的驅動性能更好,支持 SQLServer 2012 之後的資料庫的新特性。

Microsoft ODBC Driver for SQL Server#

最新版驅動下載地址   |   歷史版本驅動下載地址

使用方法也是安裝好驅動程式,設定驅動名字。

驅動名字格式:

  • Driver={ODBC Driver XX for SQL Server} (XX 是你安裝的驅動版本的名字)
資料庫版本 →
↓ 驅動程式版本
Azure SQL DatabaseAzure Synapse AnalyticsAzure SQL 托管實例SQL Server 2019SQL Server 2017SQL Server 2016SQL Server 2014SQL Server 2012SQL Server 2008 R2SQL Server 2008SQL Server 2005
17.6
17.5
17.4
17.3
17.2
17.1
17.0
13.1
13
11

SQL 版本相容性 | 表格來自 Microsoft

總結#

ODBC Driver for SQL Server 的性能更好,新版本有很多優化,有新特性,2021 年做開發就要選他。

不同的驅動版本的支持的資料庫版本也不同。請你一定要看好自己的 SQLServer 版本,去安裝對應版本的驅動,然後配置好驅動名字。

還發現了一個非常棒的網站:ConnectionStrings

ConnectionStrings.com helps developers connect software to data. It's a straight to the point reference about connection strings, a knowledge base of articles and database connectivity content and a host of Q & A forums where developers help each other finding solutions.

ConnectionStrings.com 幫助開發人員將軟體連接到資料庫。它是一個關於連接字串的直接參考、一個資料庫連接內容和文章的知識庫,同時也是一個問答論壇,開發人員可以在這裡互相幫助尋找解決方案。

參考連結#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。