核心變更:預設開啟 Windows 防火牆
XP SP2 引入增強版 Windows 防火牆(原 Internet 連線防火牆),預設在所有網路介面啟用,封鎖未經請求的輸入流量。直接衝擊依賴網路通訊的 SQL Server/MSDE 服務。
受影響版本一覽
- SQL Server 2000 Developer / Evaluation / Personal Edition
- SQL Server 7.0 Standard / Personal Edition
- MSDE 2000、MSDE 1.0
- 內嵌 MSDE 的產品:Access 2002、Visual Studio .NET、Office XP Developer/Professional、BizTalk Server 2002、SharePoint Team Services 等
具體狀
- 遠端應用程式連線失敗,錯誤訊息通常為「連線逾時」或「找不到伺服器」。
- 本機連線(Named Pipes/Shared Memory)不受影響。
- 事件檢視器記錄防火牆封鎖封包。
根本原因
SQL Server 預設通訊埠:
- TCP 1433(預設執行個體)
- UDP 1434(SQL Server Browser 服務)
- Named Pipes:TCP 445(SMB/檔案共用)
防火牆預設封鎖上述所有輸入連線。
解決方案矩陣
| 案例 | 建議動作 |
| SQL Server 2000 SP3a 以上 | 安裝 SP3a 後,安裝程式會自動配置防火牆例外,無需手動干預。 |
| SQL Server 2000 SP3a 以前 | 必須升級至 SP3a 或手動開啟埠(1433、1434、445)。 |
| MSDE 2000 搭配應用程式 | 確認應用程式安裝程式是否已整合 SP3a;若無,需手動部署 SP3a 或配置防火牆。 |
| 僅需本機存取 | 無需變更,防火牆預設允許本機回環介面通訊。 |
手動開啟埠步驟(控制台 → Windows 防火牆 → 例外狀況 → 新增埠)
- TCP 1433:SQL Server 資料庫引擎
- UDP 1434:SQL Server Browser(命名執行個體發現)
- TCP 445:Named Pipes / 檔案共用(若使用多協議)
最佳實務建議
- 優先升級至最新 Service Pack(SQL 2000 SP4、MSDE SP3a)。
- 生產環境建議指派靜態 TCP 埠,避免動態埠導致防火牆規則失效。
- 僅開啟必要埠,遵循最小權限原則;考慮使用 IPSec 限制來源 IP。
- 定期稽核防火牆日誌,偵測異常連線嘗試。
檢測 MSDE 是否安裝
服務管理員 → 服務 → 尋找 MSSQLSERVER(預設執行個體)或 MSSQL$InstanceName(命名執行個體)。