![可能導致 ODBC 連線報告未找到資料來源名稱的原因](https://rvso.com/image/568259/%E5%8F%AF%E8%83%BD%E5%B0%8E%E8%87%B4%20ODBC%20%E9%80%A3%E7%B7%9A%E5%A0%B1%E5%91%8A%E6%9C%AA%E6%89%BE%E5%88%B0%E8%B3%87%E6%96%99%E4%BE%86%E6%BA%90%E5%90%8D%E7%A8%B1%E7%9A%84%E5%8E%9F%E5%9B%A0.png)
我正在與一家小型企業合作,該企業使用基於 Access 的資料庫進行工單管理。該系統已經存在多年,他們有 6-7 台 PC,使用 ISV 的客製化軟體來存取資料庫。透過映射磁碟機 (Z:) 連線存取資料庫。
幾個月前,他們開始間歇性地收到此錯誤:
未找到資料來源名稱且未指定預設驅動程式
這導致 ISV 必須連接到資料庫並運行修復才能恢復資料庫。他們看到的錯誤更加具體,表明文件格式已損壞。支援技術表明該問題是由網路上的交易失敗引起的。為此我們嘗試了幾件事
- 將資料庫移至不同的主機,以防原始「伺服器」PC 出現問題
- 更換網路交換機
- 開始將客戶端一一斷開網絡,試圖隔離有問題的孩子,但結果沒有一致
到目前為止,還沒有運氣。
我的問題 - 其中一台 PC 是否會關閉其驅動器映射並損壞打開的資料庫 - Windows 7 中是否有任何新功能可能會妨礙 - 您能否推薦一種更好的方法來隔離原因。
答案1
這幾乎肯定是 32 位元與 64 位元 DSN 問題。若要在 64 位元環境中使用 32 位元 DSN,請前往C:\Windows\SysWoW64\odbcad32.exe
我們的內部應用程式也有非常相似的限制。為了避免將來出現此問題,您可能需要安裝最新版本SQL Server 本機用戶端並透過群組原則在每台電腦上部署 32 位元和 64 位元 DSN。
答案2
如果使用 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。只要您意識到控制面板可能無法按預期工作,我認為任何配置都不會難倒您。