首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

MS SQL Client 連線部署解決方案:免安裝 SQL Client 即可連線

     編輯:關於SqlServer

問題場景

打包部署的應用程式 (如 PowerBuilder) 在客戶端機器未安裝 SQL Server Client 時無法連線資料庫。僅複製常見 DLL (ntwdblib.dll、dbnetlib.dll 等) 仍提示連線失敗,安裝完整 SQL Server 後才正常。

根因分析

  • 缺少關鍵 DLL 或版本不匹配 (特別是 ntwdblib.dll 版本需 ≥ 2000.80.194.0 含 SP4 修正)
  • 未配置用戶端網路庫 (Named Pipes / TCP/IP) 啟用順序與參數
  • 註冊表缺少連線別名與網路庫設定

最小部署檔案清單 (經測驗可在 Win98 以上環境運作)

核心 4 個 DLL (放置於 EXE 同目錄即可,免註冊、免註冊表)

  1. pbvm80.dll (PowerBuilder VM,若非 PB 應用則不需)
  2. dbnetlib.dll (網路庫核心)
  3. dbnmpntw.dll (Named Pipes 網路庫)
  4. ntwdblib.dll (DB-Library 兼容層,關鍵!)

完整建議清單 (含 PB 運行時與 SQL Client 驅動)

類別檔案
PB 運行時PBMss80.dll、libjcc.dll、pbvm80.dll、pbdwe80.dll、libjotsclnt.dll、PBRTC80.DLL、PBTRA80.DLL、pbodb80.dll、pbdwo80.dll、pbdwp80.dll
SQL Client 驅動dbnetlib.dll、dbnmpntw.dll、ntwdblib.DLL、DBMSSOCN.DLL、WINDBVER.EXE

自動化部署批次檔

@echo off
rem sqlconfig.bat - 複製 DLL 至 System32 (需管理員權限)
copy *.dll %systemroot%\system32

rem 或僅放在 EXE 目錄 (免管理員權限,推薦)
rem 確保應用程式目錄在 PATH 中或設定 App Paths 註冊表

註冊表配置 (若不想依賴預設網路庫順序)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]
"DSQUERY"="DBMSSOCN"
"ServerAlias"="DBMSSOCN,ServerName,1433"

說明: 強制使用 TCP/IP Sockets (DBMSSOCN) 連線 ServerName:1433,避免 Named Pipes 預設優先導致防火牆阻擋。

關鍵驗證步驟

  1. 確認 ntwdblib.dll 版本 ≥ 2000.80.194.0 (含 SP4 修正連線重設問題)
  2. 客戶端 cliconfg.exe (用戶端網路工具) 啟用 TCP/IP、設定別名
  3. 測試 osql -S ServerName -U user -P pwd -d dbname 連線
  4. 應用程式連線字串使用別名或 IP:Port 格式

現代化替代方案

  • Microsoft ODBC Driver 17/18 for SQL Server: 獨立安裝包、支援 TLS 1.2、Always Encrypted、Azure AD
  • Microsoft OLE DB Driver 18 (MSOLEDBSQL): 取代 SQLOLEDB,支援新功能
  • .NET 應用: 直接使用 System.Data.SqlClient 或 Microsoft.Data.SqlClient (無額外 Client 安裝需求)

「核心 4 DLL + EXE 同目錄」為舊版應用 (PB/VB6/Delphi) 最輕量部署模式;新開發專案請直接採用最新官方驅動程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved