打包應用程式部署至客戶端時,常因缺少正確的 SQL Server 連線 DLL 導致「無法連線伺服器」。本文整理經實測可行的最精簡檔案清單、註冊表設定與自動部署批次檔,適用 PB/VC/VB 等開發工具。
dbnmpntw.dll -- Named Pipes Net-Library
dbmssocn.dll -- TCP/IP Sockets Net-Library
dbnetlib.dll -- Network Library Router
ntwdblib.dll -- DB-Library (舊版相容,部分驅動仍需)
將上述 4 檔置於應用程式同目錄(App.Path)即可,**無需註冊、無需安裝客戶端工具、無需修改註冊表**,經測試 Windows 98 至 Windows 10 皆可運作。
| 類別 | 檔案 |
|---|---|
| PowerBuilder VM | pbvm80.dll, pbdwe80.dll, pbmss80.dll, pbrtc80.dll, pbtra80.dll, pbsyc80.dll, pbodb80.dll, pbdwo80.dll, pbdwp80.dll |
| SQL 連線驅動 | dbnetlib.dll, dbnmpntw.dll, ntwdblib.dll, dbmssocn.dll, windbver.exe |
| libjcc.dll, libjotsclnt.dll | Java 相關(視專案需求) |
DeploySQLClient.bat@echo off
REM 將本批次檔與所有 DLL 放同一目錄執行
set DEST=%SystemRoot%\System32
copy /Y *.dll %DEST%\
REM 可選:寫入註冊表指定預設 TCP/IP 連線
reg add "HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo" /v "MyServer" /t REG_SZ /d "DBMSSOCN,ServerName,1433" /f
echo 部署完成,請測試連線。
pause
Provider=SQLOLEDB;Data Source=ServerName,1433;Initial Catalog=DBName;User ID=sa;Password=****;
-- 或 ODBC
Driver={SQL Server};Server=ServerName,1433;Database=DBName;Uid=sa;Pwd=****;
關鍵提醒:若伺服器啟用強制加密或 TLS 1.2,舊版 dbnetlib.dll (SQL 2000 時代) 可能不支援,建議改用 SQL Native Client (SNAC) 或 ODBC Driver 17/18 for SQL Server。