首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL Server 2008 服務啟動失敗:TCP/IP 端口衝突與網站連接報錯的解決

     編輯:程式設計綜合問答

SQL Server 2008 (MSSQLSERVER) 服務啟動後自動停止,或僅在禁用 TCP/IP 協議時能啟動。同時 SSMS 連接本地實例報錯。核心原因:**默認端口 1433 被其他實例 (常見為 SQL Server Express) 佔用**,導致默認實例無法綁定端口啟動。

現象

  • 服務管理器中啟動 MSSQLSERVER → 幾秒後自動停止。
  • SQL Server Configuration Manager 中啟用 TCP/IP 後服務無法啟動;禁用 TCP/IP 則能啟動(但僅支持共享內存/命名管道本地連接)。
  • 錯誤日誌:Error: 17058, Severity: 16, State: 1. initerrlog: Could not open error log file 或 TCP Provider: Failed to listen on [::1, 1433]。

解決方案

方法一:禁用 SQL Express 的 TCP/IP(最快)

  1. 打開 SQL Server Configuration Manager。
  2. 展開 SQL Server Network Configuration → Protocols for SQLEXPRESS。
  3. 右鍵 TCP/IP → Disable。
  4. 重啟 SQL Server (MSSQLSERVER) 服務。

原理:Express 實例佔用 1433,禁用其網絡協議釋放端口,默認實例可正常綁定。

方法二:修改默認實例監聽端口(避開衝突)

  1. Configuration Manager → Protocols for MSSQLSERVER → TCP/IP → 右鍵 Properties。
  2. IP Addresses 標籤 → 清空 TCP Dynamic Ports,在 TCP Port 填入未佔用端口(如 1434、2433)。
  3. 重啟服務。
  4. 客戶端連接時需指定端口:Server=localhost,1434 或 IP,Port。

方法三:修改 Express 實例端口(保留兩者網絡訪問)

同方法二,操作 Protocols for SQLEXPRESS 的 TCP/IP 屬性,改其端口為 1434 等。

驗證端口佔用

# 命令行
netstat -ano | findstr :1433
# 查看 PID,再用 tasklist | findstr  確認進程

網站連接報錯補充

  • 連接字符串確認:Server=localhost;Database=xxx;Integrated Security=True; (Windows 驗證) 或 User ID=sa;Password=xxx; (SQL 驗證)。
  • 防火牆入站規則允許 sqlservr.exe 或端口 1433/自定義端口。
  • 啟用 SQL Server Browser 服務(命名實例連接需要)。

參考資源

SQL Server 2008 端口衝突修改圖文教程

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