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

ASP.NET 登入驗證:SqlException「管道另一端無任何進程」排查指南

     編輯:程式設計綜合問答

錯誤訊息

System.Data.SqlClient.SqlException: 在向伺服器發送請求時發生傳輸級錯誤。
(provider: 命名管道提供程式, error: 0 - 管道的另一端上無任何進程。)

常見原因

  1. SQL Server 服務未啟動:檢查服務管理員中 MSSQLSERVER 或具名實例是否為「執行中」。
  2. 連接字串錯誤:實例名稱、埠號、協定(Named Pipes vs TCP/IP)不匹配。
  3. 防火牆封鎖:TCP 1433 或 Named Pipes 管道通訊被阻擋。
  4. 用戶權限不足:登入帳號無資料庫存取權限。

排查步驟

// 1. 確認連接字串格式(TCP/IP 範例)
string connStr = "Server=localhost;Database=MyDB;User Id=sa;Password=123;";

// 2. 啟用 TCP/IP 協定(SQL Server Configuration Manager)
// 3. 測試連線:使用 SSMS 或 `sqlcmd -S localhost -U sa -P 123`
// 4. 檢查錯誤日誌:C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log\ERRORLOG

程式碼防禦性寫法

using (var conn = new SqlConnection(connStr)) {
    try {
        conn.Open();
        // 執行命令...
    } catch (SqlException ex) {
        // 記錄 ex.Number、ex.Message,區分暫時性錯誤(如 -2, 53, 233)與永久性錯誤
        throw;
    }
}

建議

優先使用 TCP/IP 連接,避免 Named Pipes 在跨機器或高並發下的不穩定。生產環境請啟用連接池與重試機制(Polly 或 Enterprise Library)。

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