Odbc

什麼可能導致和 ODBC 連接報告未找到數據源名稱

  • February 9, 2012

我正在與一家使用基於 Access 的數據庫進行工作訂單管理的小型企業合作。該系統已經存在多年,他們有 6-7 台 PC 使用來自 ISV 的定制軟體來訪問數據庫。通過映射驅動器 (Z:) 連接訪問數據庫。

幾個月前,他們開始間歇性地收到此錯誤:

未找到數據源名稱且未指定預設驅動程序

這導致 ISV 必須連接到數據庫並執行修復才能恢復數據庫。他們看到的錯誤更具體一些,表明文件格式已損壞。支持技術表明該問題是由網路上的交易失敗引起的。為此,我們嘗試了幾件事

  • 將數據庫移動到不同的主機,以防原來的“伺服器”PC出現問題
  • 更換了網路交換機
  • 開始將客戶端一個一個從網路中移除,以試圖隔離問題孩子,但沒有一致的結果

到目前為止,沒有運氣。

我的問題-其中一台 PC 是否會關閉其驅動器映射並損壞打開的數據庫-Windows 7 中是否有任何新功能可能會妨礙您-您能否推荐一種更好的方法來隔離原因。

這幾乎可以肯定是 32 位與 64 位 DSN 的問題。要在 64 位環境中使用 32 位 DSN,請轉至C:\Windows\SysWoW64\odbcad32.exe

我們的內部應用程序有一個非常相似的限制。為避免將來出現此問題,您可能需要安裝最新的SQL Server Native Client並通過組策略在每台電腦上部署 32 位和 64 位 DSN。

如果您使用 SUBST.exe 命令而不是“NET USE”映射驅動器,則與“NET USE”不同,當映射驅動器失去時,連接將始終重試。請記住,這樣做會使不了解 SUBST.exe 命令的人難以取消映射驅動器。當以這種方式映射驅動器時,您不能僅將其與 windows exploder 斷開連接……那將無法正常工作。

就個人而言,我同意這是 64 位問題。

請記住 32 位和 64 位 ODBC DSN 控制面板,雖然您希望它們以某種方式工作,但在某些情況下它們會相反。例如:在 64 位系統上並嘗試添加 64 位“使用者 DSN”時,您可能會注意到連接失敗,但使用“系統 DSN”它可以工作。這是因為 ODBC 面板實際上是在 64 位 ODBC 控制面板的“使用者”選項卡中生成“32 位 DSN”,而它會在“系統”選項卡中生成預期的 64 位 DSN。只要您意識到控制面板沒有按預期執行的可能性,我認為任何配置都不會難倒您。

引用自:https://serverfault.com/questions/334181