首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

SQL Server 連接字串指定非預設埠號完整指南

     編輯:關於C#

問題情境:連線失敗「無法打開到 SQL Server 的連接」

預設 SQL Server 監聽埠為 1433。若伺服器為安全考量修改埠號(如 2433),連接字串若仍沿用預設,將拋出錯誤:

在建立與服務器的連接時出錯。在連接到 SQL Server 2005 時,在預設的設置下 SQL Server 不允許進行遠程連接可能會導致此失敗。 (provider: 命名管道提供程序, error: 40 - 無法打開到 SQL Server 的連接)

連接字串正確寫法

<!-- 標準寫法:Server=IP/主機名,埠號 -->
<add key="ConnStr" value="server=192.168.1.100,2433;uid=sa;pwd=YourPwd;database=MyDB;" />

<!-- 本機實例同理 -->
<add key="ConnStr" value="server=.,2433;uid=sa;pwd=YourPwd;database=MyDB;" />

關鍵點:server 或 Data Source 後以 逗號 分隔埠號,非冒號、分號或斜線。

修改 SQL Server 監聽埠步驟

  1. 開啟「SQL Server 組態管理員」(SQL Server Configuration Manager)。
  2. 展開「SQL Server 網路設定」→ 選取對應執行個體(如 MSSQLSERVER)。
  3. 右鍵「TCP/IP」→「啟用」→ 「屬性」→ 「IP Addresses」頁籤。
  4. 捲動至「IPAll」區塊,將「TCP 連接埠」改為目標埠(如 2433),清空「TCP 動態連接埠」。
  5. 確定 → 重啟 SQL Server 服務(MSSQLSERVER)。

舊版(SQL 2000/2005)可用「伺服器網路公用程式」完成相同操作。

防火牆與遠端連線檢查清單

  • ✅ Windows 防火牆開放該埠(入站規則:TCP 2433)。
  • ✅ SQL Server 服務已重啟並監聽新埠(netstat -an | findstr 2433)。
  • ✅ 「SQL Server 組態管理員」→「通訊協定」→ TCP/IP 已啟用。
  • ✅ 連接字串使用 server=IP,Port 格式,且無多餘空白。

延伸:ASP.NET StateServer 模式埠號設定

若使用 sessionState mode="StateServer",需同步設定狀態服務埠:

<sessionState mode="StateServer"
    stateConnectionString="tcpip=192.168.1.50:42424"
    cookieless="false" timeout="20" />

伺服器端修改埠號:編輯登錄 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\Port(預設 42424),重啟「ASP.NET State Service」。

常見錯誤排查

現象可能原因解決
Error 40 / Named Pipes用戶端嘗試 Named Pipes 而非 TCP連接字串加 Network Library=DBMSSOCN 強制 TCP
本機連得上,遠端連不上防火牆攔截 / TCP 未啟用 / 登錄 AllowRemoteConnection=0開放埠、啟用 TCP、設登錄為 1
StateServer 連線失敗狀態服務未啟動 / 埠號不符 / 遠端登錄未開檢查服務、同步埠、設 AllowRemoteConnection=1

總結

指定非預設埠只需在連接字串 server=host,port 加上逗號與埠號,並確保伺服器 TCP 協定啟用、防火牆開放、服務重啟。StateServer 同理需同步修改登錄埠號與遠端連線許可。掌握這套流程,部署與遷移資料庫時即可游刃有餘。

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