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

SQL Server 2005 遠端連線完整設定指南:TCP/IP、Browser 服務與防火牆三大關卡

     編輯:關於SqlServer

錯誤徵兆

Sqlcmd: Error: Microsoft SQL Native Client: 
An error has occurred while establishing a connection to the server. 
When connecting to SQL Server 2005, this failure may be caused by the fact that 
under the default settings SQL Server does not allow remote connections.

預設 SQL Server 2005 Express / Developer Edition **關閉遠端連線**、**停用 Browser 服務**、**防火牆封鎖 1433/1434 埠**。

關卡一:啟用遠端連線協定 (Surface Area Configuration)

  1. 開始 → 程式集 → Microsoft SQL Server 2005 → 組態工具 → **SQL Server 介面區組態工具**。
  2. 選「服務與連線的介面區組態工具」。
  3. 展開「Database Engine」→「遠端連線」→ 選 **「本機和遠端連線」** → 勾選 **TCP/IP** (必要時 Named Pipes)。
  4. 按「套用」→ 提示需重新啟動服務 → 同視窗「服務」→「停止」→「啟動」 MSSQLSERVER。

關卡二:啟用 SQL Server Browser 服務

必要性: 用戶端以執行個體名稱連線 (如 `Server\SQLEXPRESS`) 且未指定 TCP 埠時,Browser 服務負責解析執行個體對應的動態埠號 (UDP 1434)。

  1. 同介面區工具 → 「SQL Server Browser」→ 啟動類型改 **「自動」** → 套用。
  2. 按「啟動」服務。

⚠️ 安全性考量: Browser 服務會公開伺服器上所有執行個體名稱與連線資訊。若環境高敏感,建議:
① 關閉 Browser,改用固定 TCP 埠 (下節設定) 直連;
② 防火牆封鎖 UDP 1434 僅允許受信任子網。

關卡三:Windows 防火牆例外規則

步驟 1:取得執行個體 ID (Instance ID)

  1. 組態工具 → **SQL Server 組態管理員**。
  2. 左窗格「SQL Server Browser 服務」→ 右鍵執行個體 → 「屬性」→ 「進階」頁籤 → 複製 **Instance ID** (如 `MSSQL.1`)。

步驟 2:為 sqlservr.exe 建立例外 (每個執行個體)

  1. 控制台 → Windows 防火牆 → 「例外」→ 「新增程式」→ 「瀏覽」。
  2. 定位:`C:\Program Files\Microsoft SQL Server\\MSSQL\Binn\sqlservr.exe` (如 `MSSQL.1`)。
  3. 確定 → 重複為每個執行個體建立。

步驟 3:為 sqlbrowser.exe 建立例外 (一次即可)

  1. 同樣「新增程式」→ 瀏覽:`C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe`。

進階:固定 TCP 埠號 (避免依賴 Browser、提升安全性)

  1. SQL Server 組態管理員 → 「SQL Server 網路組態」→ 選執行個體 → 「TCP/IP」→ 右鍵「屬性」。
  2. 「IP 位址」頁籤 → 捲至 **IPAll** → **TCP 連接埠** 設定固定值 (如 `1433` 或自訂 `2433`),清空「TCP 動態連接埠」。
  3. 重新啟動 SQL Server 服務。
  4. 用戶端連線字串指定埠號:`Server=192.168.1.100,2433;Database=MyDB;...`

驗證連線

-- 本機測試
sqlcmd -S .\SQLEXPRESS -E -Q "SELECT @@VERSION"
-- 遠端測試 (IP + 執行個體)
sqlcmd -S 192.168.1.100\SQLEXPRESS -U login -P pwd -Q "SELECT DB_NAME()"
-- 遠端測試 (IP + 固定埠)
sqlcmd -S 192.168.1.100,2433 -U login -P pwd -Q "SELECT DB_NAME()"

常見問題排查清單

現象可能原因排查步驟
本機連得上、遠端連不上防火牆封鎖、TCP/IP 未啟用、Browser 未啟動telnet IP 1433;檢查錯誤日誌 `Login failed`/`Connection timeout`
命名執行個體連不上、預設實例正常Browser 服務未啟動、UDP 1434 被封鎖啟用 Browser 或改用固定埠直連
連線後隨即斷開強制加密、憑證不信任、登入觸發器封鎖檢查 `Force Encryption` 設定、Errorlog 17836/18456
Windows 驗證失敗 (雙躍點)Kerberos 委派未設定 (SPN)設定 SPN:`setspn -A MSSQLSvc/Host:Port Domain\ServiceAccount`
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved