在 Windows 10 安裝 BDE,讓 SQL 2000 的資料庫繼續工作

最近遇到一台老舊的主機,主機板已經出狀況隨時可能徹底掛掉
而主機上的會計系統依然還在使用,對方也打算繼續用
硬體設備的問題只剩更新一途,那 OS 和相關的環境也只能被迫更新
礙於現在的硬體都無法支援舊的作業系統,花了一點時間找到解決的方法

原有環境
Windows Server 2000 + SQL Server 2000
會計系統是 Delphi + BDE 的搭配
而 BDE Database Alias 的 Type 是 MSSQL

新電腦的配置大概如下

  • OS: Windows 10 x64
  • SQL: SQL Server 2008 x64
  • 資料庫檔案: 不以備份還原的方式處理,而是使用 卸離和附加 的方式處理

 

先大概說明一下

SQL Server 2000 的資料庫檔案卸離後
能附加的 SQL Server 版本只到 2008 R2,之後的新版本就無法附加
所以 SQL Server 2008 R2 或 SQL Server 2005 應該都可以,看手上的授權有什麼
但是都要是64位元版本,安裝 2005 x86 時就失敗

BDE 部份
BDEInfoSetup.exe 是可以在 64位元作業系統運作的版本,安裝後也測試正常
需要的 BDE Alias 設定好之後,應用程式就可以正常運作了
但是不知道為什麼,過一段時間自訂的 Alias 都會全部遺失
鸚鵡最後的解決方法是:先安裝 BDEInfoSetup.exe 不移除直接安裝 BDE32.EXE
最後 BDE 的路徑會在 C:\BDE32
這時候再新增的 Alias 就不會再發生遺失的問題了

安裝 DBE32.EXE 後,Database Alias Type 選 MSSQL 測試連線會出現錯誤,如下圖

Vendor initialization failed.
Cannot load an IDAPI service library.
File: NTWDBLIB.DLL
Alias: DB_Alias

BDE Error: 15879

ntwdblib.dll 是 SQL Server 2000 用戶端 DLL,所以直接到原本的系統找一下就有
複製出來放到新電腦 Windows 安裝目錄下的 SysWOW64 內即可

 

全部的步驟如下

  1. 作業系統安裝 & 驅動程式
  2. 連上網路
  3. 安裝 SQL Server 2008 x64 (會需要連網安裝 .NET Framework)
  4. 關閉網路連線 (避免系統自動更新)
  5. 附加 資料庫檔案
  6. 新增 資料庫需求帳號以及權限
  7. 安裝 BDEInfoSetup.exe
  8. 直接再安裝 BDE32.EXE
  9. 將 ntwdblib.dll 檔案複製到 Windows 安裝目錄下的 SysWOW64 內 (預設 C:\Windows\SysWOW64 )
  10. 定義 BDE Alias 後測試連線
  11. 開啟應用程式測試

這樣就成功讓老舊的 Delphi 程式繼續在 Windows 10 x64 的環境中繼續存活

但是為了未免不必要的風險,免去不必要的麻煩
鸚鵡有建議,透過防火牆將這台機器所有連外動作全部 Deny,防堵 Windows 10 的自動更新
最後也有這樣做