錯誤訊息
System.Data.SqlClient.SqlException:
在與 SQL Server 建立連接時出現與網絡相關的或特定於實例的錯誤。
未找到或無法訪問服務器。請驗證實例名稱是否正確並且 SQL Server 已配置為允許遠程連接。
(provider: 命名管道提供程序, error: 40 - 無法打開到 SQL Server 的連接)
核心排查清單 (按順序)
1. 確認實例名稱 (Express 版關鍵)
2. 啟用遠程連線 (SQL Server Configuration Manager)
- SQL Server 網路配置 → MSSQLSERVER (或 SQLEXPRESS) → 協定
- 啟用 TCP/IP 與 Named Pipes
- TCP/IP 屬性 → IP Addresses → IPAll → TCP Port 設為 1433 (或自訂)
- 重啟 SQL Server 服務 (SQL Server (MSSQLSERVER) / SQL Server (SQLEXPRESS))
3. 設定混合驗證模式 (SQL Server + Windows)
- SSMS 以 Windows 驗證登入
- 伺服器右鍵 → 內容 → 安全性 → SQL Server 和 Windows 驗證模式
- 重啟服務生效
4. 啟用 sa 帳號並設定強密碼
- 安全性 → 登入名 → sa → 右鍵內容
- 「一般」頁:設定密碼、取消勾選「強制執行密碼原則」 (測試環境)
- 「狀態」頁:登入 → 啟用
5. 防火牆開放埠口
# Windows 防火牆新增入站規則
埠口:TCP 1433 (或自訂埠)
Named Pipes 需開放 445 (SMB)
6. 連線字串完整範本
| 場景 | 連線字串 |
| 本機 Express (命名實例) | Data Source=.\SQLEXPRESS;Initial Catalog=DB;User ID=sa;Password=*** |
| 本機預設實例 | Data Source=.;Initial Catalog=DB;User ID=sa;Password=*** |
| 遠端 Express | Data Source=192.168.1.100\SQLEXPRESS,1433;Initial Catalog=DB;User ID=sa;Password=*** |
| 遠端預設實例 | Data Source=192.168.1.100,1433;Initial Catalog=DB;User ID=sa;Password=*** |
| 信任連線 (Windows 驗證) | Data Source=.\SQLEXPRESS;Initial Catalog=DB;Integrated Security=True |
7. ASP.NET 註冊資料庫 (舊版 Membership/Role 用)
cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
aspnet_regsql.exe # 嚮導介面或命令列參數
驗證步驟
- SSMS 連線測試 (伺服器名填
.\SQLEXPRESS)
- VS 伺服器總管 → 新增連線 → 測試連線
- ASP.NET 網站管理工具 → 提供者 → 測試 AspNetSqlProvider