核心概念:數據庫客戶端 vs 服務端
**ASP/應用程序 = 客戶端**,負責發送 T-SQL 命令。**SQL Server = 服務端**,負責存儲、查詢、事務。**客戶端機器無需安裝服務端引擎**,只需安裝**客戶端驅動** (OLEDB/ODBC/ADO.NET Provider) 並配置連接字符串指向服務端實例。
場景一:連接本地實例 (需本地安裝服務端)
- 開發機直接跑數據庫服務。
- 必須安裝:SQL Server Express / Developer / Enterprise 任一版本。
- 服務運行狀態:`services.msc` → `MSSQLSERVER` / `MSSQL$SQLEXPRESS` 顯示「正在運行」。
- 連接字符串:`Data Source=.\SQLEXPRESS` 或 `(localdb)\MSSQLLocalDB`。
場景二:連接遠程/局域網實例 (本地無需服務端)
- 開發機只裝驅動,連接服務器 IP。
- 服務端配置:
- SQL Server Configuration Manager → 啟用 **TCP/IP** 協議 → IPAll 端口 **1433**。
- SQL Server Management Studio → 服務器屬性 → **允許遠程連接**。
- 防火牆:入站規則允許 **TCP 1433** (或自定義端口)。
- 創建 SQL 登錄賬號 (如 `dev_user`),授予數據庫權限。
- 客戶端連接字符串:
-- OLEDB (ASP/ADO)
Provider=SQLOLEDB;Data Source=192.168.1.100,1433;User ID=dev_user;Password=pass;Initial Catalog=MyDB
-- ADO.NET (C#)
Server=192.168.1.100,1433;Database=MyDB;User ID=dev_user;Password=pass;TrustServerCertificate=True
場景三:無服務端也能用的輕量級方案
| 方案 | 原理 | 適用場景 |
| SQL Server Express LocalDB | 用戶態進程,按需啟動,無服務常駐 | 單機開發、學習、CI/CD 測試 |
| SQLite / Access (.mdb/.accdb) | 文件型,進程內加載 DLL,零配置 | 嵌入式、桌面應用、小數據量 |
| Docker 運行 SQL Server 容器 | 容器隔離,啟動即用,版本可控 | 跨平台開發、微服務、快速佈署測試環境 |
常見連接失敗排查清單
- **Ping 通服務器 IP**?
- **Telnet IP 1433** 端口通? (`telnet 192.168.1.100 1433`)
- **服務端 TCP/IP 協議已啟用**? (配置管理器)
- **服務端允許遠程連接**? (SSMS 屬性)
- **防火牆放行 1433**? (雲服務器還需安全組放行)
- **賬號權限正確**? (登錄名、密碼、數據庫用戶映射)
- **驅動版本/位數匹配**? (32位應用需32位驅動 `SQLOLEDB`/`MSOLEDBSQL`)
- **連接字符串拼寫正確**? (實例名、端口、數據库名)
總結
**數據庫連接 = 驅動 + 連接字符串(目標地址+認證) + 網絡通達 + 服務端配置**。**本地無引擎可連遠程/用輕量級方案**。理解客戶端/服務端分離架構,按場景選型:開發學習→LocalDB/SQLite;團隊開發→遠程實例/Docker;生產→高可用集群。
- 上一篇文章: ASP連接數據庫失敗?本地開發環境輕量級數據庫替代方案
- 下一篇文章: Java 通訊錄管理系統:Swing/JavaFX 界面與 MySQL/JDBC 數據庫完整實現指南
Copyright ©
程式碼之家 All Rights Reserved