最近遇到一台老舊的主機,主機板已經出狀況隨時可能徹底掛掉
而主機上的會計系統依然還在使用,對方也打算繼續用
硬體設備的問題只剩更新一途,那 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_AliasBDE Error: 15879
ntwdblib.dll 是 SQL Server 2000 用戶端 DLL,所以直接到原本的系統找一下就有
複製出來放到新電腦 Windows 安裝目錄下的 SysWOW64 內即可
全部的步驟如下
- 作業系統安裝 & 驅動程式
- 連上網路
- 安裝 SQL Server 2008 x64 (會需要連網安裝 .NET Framework)
- 關閉網路連線 (避免系統自動更新)
- 附加 資料庫檔案
- 新增 資料庫需求帳號以及權限
- 安裝 BDEInfoSetup.exe
- 直接再安裝 BDE32.EXE
- 將 ntwdblib.dll 檔案複製到 Windows 安裝目錄下的 SysWOW64 內 (預設 C:\Windows\SysWOW64 )
- 定義 BDE Alias 後測試連線
- 開啟應用程式測試
這樣就成功讓老舊的 Delphi 程式繼續在 Windows 10 x64 的環境中繼續存活
但是為了未免不必要的風險,免去不必要的麻煩
鸚鵡有建議,透過防火牆將這台機器所有連外動作全部 Deny,防堵 Windows 10 的自動更新
最後也有這樣做