ODBC 驅動程式安裝檢查

總結

本文將說明如何確認 Windows 電腦上已正確安裝、註冊並設定開放資料庫連接(ODBC)驅動程式。 當應用程式無法連接資料庫、ODBC 驅動程式未出現在 ODBC 資料來源管理員中,或收到錯誤 Data source name not found and no default driver specified (SQLSTATE IM002)時,請使用此工具。 驗證步驟涵蓋 ODBC 資料來源管理員的 32 位元與 64 位元副本、Windows 登錄檔中的資料來源名稱(DSN)及驅動程式條目,以及應用程式傳遞給 ODBC 驅動程式管理器的 連接字串。

您應該打開哪一份 ODBC Data Source Administrator 的副本?

在 64 位元版本的 Windows 上,ODBC 資料來源管理員有兩個版本,而每個版本各自管理符合其位元版本的驅動程式與系統 DSN:

  • 針對 64 位應用程式,選取 [Windows+],然後輸入 ODBCAD32.EXE 或 C:\WINDOWS\SYSTEM32\ODBCAD32.EXE。

  • 針對 32 位應用程式,選取 [Windows+R],然後輸入 C:\WINDOWS\SYSWOW64\ODBCAD32.EXE。

兩個執行檔都命名為 odbcad32.exe,因此資料夾路徑決定你開啟哪一個。 工具的位元數一定要與連接的應用程式位元大小相匹配。 32位元應用程式無法載入64位元ODBC驅動程式,64位元應用程式也無法載入32位元ODBC驅動程式。

ODBC 連接字串範例

呼叫 ODBC 驅動程式的應用程式可以使用資料來源名稱(Data Source Names,DSN)或無 DSN 的連接字串。 範例如下:

  • driver={ODBC Driver 18 for SQL Server};server=sqlprod01;database=AdventureWorks;trusted_connection=yes
  • dsn=userdsn1
  • dsn=test;uid=<user name>;pwd=<password>

第一個 連接字串 會明確指定驅動程式名稱、伺服器名稱、資料庫名稱,以及是否要使用整合式安全性 (trusted_connection)。 這是無 DSN 連線。

第二個和第三個連線字串使用 DSN,也就是儲存在登錄檔中的這些項目的封裝。 使用者名稱和密碼不能儲存在 DSN 中,必須明確指定。 欲了解更多關於 DSN 屬性的資訊,請參閱 DSN 連接字串 屬性。

DSN 是應用程式載入驅動程式的快捷方式,可提供間接存取層級。 藉由使用 DSN,您可以變更伺服器、資料庫,甚至是應用程式所連線的資料庫類型,而不需要變更應用程式。

連接字串 中的驅動程式名稱必須與電腦上註冊的驅動程式名稱相符。 驅動程式和 DSN 名稱不區分大小寫,但拼寫和標點符號必須完全一致。 如果沒有註冊的驅動程式匹配,ODBC 驅動程式管理員無法載入該驅動程式。

附註

SQL Server隨 Windows 附帶的驅動程式(sqlsrv32.dll)和SQL Server原生客戶端驅動SQL Server Native Client 11.0程式()不建議用於新開發。 SQL Server 原生客戶端並未隨 SQL Server 2022(16.x)及更新版本或 SQL Server Management Studio 19 及更新版本一同出貨。 新連線請使用 Microsoft ODBC 驅動程式 for SQL Server,可下載支援 Windows、Linux 和 macOS。

確認驅動程式與 DSN 是否出現在 ODBC 資料來源管理員中

使用 ODBC 資料來源管理員來驗證 ODBC 驅動程式與 DSN 的存在。 打開與應用程式位數相符的版本,然後查看 Drivers 索引標籤,確認驅動程式是否列在其中。 以下截圖顯示 64 位元與 32 位元驅動程式:

顯示64位驅動程式的螢幕快照。

顯示32位驅動程式的螢幕快照。

若驅動程式列明,請在 系統 DSN 或 使用者 DSN 標籤建立測試 DSN 並執行連線測試。 成功的測試確認驅動程式已載入,且伺服器可連線。 如果驅動程式沒有列出,請重新安裝驅動程式,然後檢查下一節描述的登錄檔金鑰。

登錄檔中的 ODBC 驅動程式與 DSN 資訊

驅動程式和 DSN 資訊儲存在登錄中:

此螢幕快照顯示登錄中的驅動程式和 DSN 資訊。

在 64 位元電腦上,登錄檔重定向可將驅動程式與系統 DSN 的 32 位元與 64 位元資訊分開。 Wow6432Node登錄檔項目儲存 32 位元驅動程式與系統 DSN 資訊。 使用者 DSN 不會被重新導向,因此 32 位元和 64 位元工具都會顯示所有使用者 DSN。 相關按鍵包括:

  • HKEY_LOCAL_MACHINE\SOFTWARE\ODBC (64 位元驅動程式與系統 DSN)
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC (32 位元驅動程式與系統 DSN)
  • HKEY_CURRENT_USER\Software\ODBC (目前使用者的 DSN 清單)

ODBC.INI 子機碼包含所有 DSN 的清單,以及每個 DSN 的子機碼。 ODBCINST.INI 子機碼列出所有驅動程式。

螢幕擷取畫面顯示 ODBC.INI 和 ODBCINST.INI 子機碼。

如果載入驅動程式時遇到問題,請檢查 ODBC.INI 子序號,找出 DSN 使用的驅動程式。

此螢幕快照顯示如何找出 DSN 所使用的驅動程式。

也請確認驅動 ODBCINST.INI 程式路徑是否指向磁碟上存在的 DLL 檔案。 登錄檔中提到遺失或移動的 DLL 是卸載、升級或手動清理後載入失敗的常見原因。 關於 Microsoft ODBC SQL Server驅動程式安裝的檔案名稱與位置,請參見系統需求、安裝及驅動程式檔案。

附註

LastUser 項目不會影響連線字串。 只有在 ODBC 數據源管理員中測試 DSN 時,才會使用它。

故障排除錯誤 IM002:找不到資料來源名稱且未指定預設驅動程式

驗證伺服器名稱、資料庫名稱,以及是否已安裝驅動程式。 如果無法載入驅動程式,您會收到下列錯誤訊息:

錯誤 [IM002] [Microsoft][ODBC 驅動程式管理員] 找不到數據源名稱,也沒有指定預設驅動程式。

此錯誤表示 ODBC 驅動程式管理器無法解析 連接字串 中的 DSN 或驅動程式名稱。 請依序檢查以下項目:

  1. 連接字串 中的 DSN 名稱與 ODBC 資料來源管理員中列出的 DSN 相符。
  2. 安裝了匹配位元數的驅動程式。 使用者 DSN 會同時出現在 32 位元和 64 位元工具中,但如果它所指向的驅動程式未安裝與應用程式位元版本相符的版本,連線就會失敗。 欲了解更多資訊,請參閱 ODBC 管理員工具顯示 32 位元與 64 位元使用者 DSN。
  3. 系統 DSN 是在與應用程式位元數相符的工具中建立的。 系統 DSN 會被登錄檔重定向,因此在 64 位元工具中建立的系統 DSN 無法用於 32 位元應用程式。
  4. DSN 範圍與執行該應用程式的帳號相符。 位於 HKEY_CURRENT_USER 下的使用者 DSN,對在不同帳戶下執行的服務不可見。 使用系統 DSN 來管理服務和網頁應用程式。
  5. 無 DSN 連接字串 中的驅動名稱會與子鍵下ODBCINST.INI列出的驅動程式相符。

即使 DSN 中的驅動程式路徑不正確,驅動程式管理員仍可根據 ODBC Data Sources 登錄鍵中列出的驅動程式名稱,在 ODBCINST.INI 子機碼中找到它。

如果驅動程式載入但連線仍然失敗,問題通常是網路、認證或加密問題,而非安裝問題。 關於這些症狀,請參見 SQL Server 中的連線問題故障排除。

支援非 Microsoft ODBC 驅動程式

對於非 Microsoft 的 ODBC 驅動程式,Microsoft 支援僅限於以下操作:

  • 檢查是否有驅動登錄金鑰。 如果沒有,請重新安裝驅動程式或諮詢廠商。
  • 檢查路徑是否指向已有的 DLL 檔案。 如果沒有,請重新安裝驅動程式或諮詢廠商。
  • 建立測試 DSN 並執行連線測試。
  • 協助擷取 處理程序監視器(Procmon) 追蹤記錄,供廠商分析。

驅動程式行為、驅動缺陷及驅動程式安裝邏輯仍由生產驅動程式的廠商負責。

第三方資訊免責聲明

本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 對這些產品的效能或可靠性不作任何隱含或暗示的保證。