預設 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 2000/2005)可用「伺服器網路公用程式」完成相同操作。
netstat -an | findstr 2433)。server=IP,Port 格式,且無多餘空白。若使用 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 同理需同步修改登錄埠號與遠端連線許可。掌握這套流程,部署與遷移資料庫時即可游刃有餘。