四大常見情境
1. 本地開發:LocalDB + .mdf 檔案 (最常用)
<connectionStrings>
<add name="MyConn"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
|DataDirectory| 對應 App_Data 資料夾。
.mdf 為獨立資料庫檔案,可直接複製部署,無需 Detach/Attach。
Integrated Security=True 使用 Windows 驗證,無需帳密。
2. 本地開發:SQL Server Compact (.sdf)
<add name="MyConn"
connectionString="Data Source=|DataDirectory|\MvcMusicStore.sdf"
providerName="System.Data.SqlServerCe.4.0" />
- 無需安裝 SQL Server 服務,適合輕量級測試。
- 效能與功能受限,不建議正式環境使用。
3. 本地開發:完整 SQL Server 實例 (Initial Catalog)
<add name="DefaultConnection"
connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie-2012213181139;Integrated Security=true"
providerName="System.Data.SqlClient" />
- 資料庫由 SQL Server 管理,非獨立檔案,部署需備份/還原或腳本。
4. 正式環境部署:遠端 SQL Server (SQL 驗證)
<add name="MyConn"
connectionString="Data Source=db-server;Initial Catalog=ProdDB;User ID=web_user;Password=P@ssw0rd;"
providerName="System.Data.SqlClient" />
- 移除
Integrated Security,改用 User ID/Password。
- 部署時務必**替換連線字串** (Web.config Transform / CI/CD 變數 / Azure App Settings)。
關鍵屬性對照表
| 屬性 | 說明 | 範例 |
| Data Source / Server | 伺服器位址、實例名 | (LocalDB)\MSSQLLocalDB、192.168.1.100、tcp:myserver.database.windows.net |
| Initial Catalog / Database | 資料庫名稱 | MyDatabase |
| AttachDbFilename | 掛載 .mdf 檔案路徑 | |DataDirectory|\App.mdf |
| Integrated Security / Trusted_Connection | Windows 驗證 | True / False |
| User ID / UID | SQL 登入帳號 | sa、web_user |
| Password / PWD | SQL 登入密碼 | P@ssw0rd |
| MultipleActiveResultSets | 啟用 MARS (同一連線多重作用中結果集) | True |
| Encrypt / TrustServerCertificate | Azure SQL / SSL 加密連線 | True / False |
程式碼中讀取
string connStr = ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString;
using (var conn = new SqlConnection(connStr)) {
conn.Open();
// ...
}
安全性最佳實務
- **勿將正式環境密碼寫入原始碼/版控**,使用 Web.config Transform、Azure Key Vault、AWS Secrets Manager 或環境變數注入。
- 啟用
Encrypt=True;TrustServerCertificate=False 強制 TLS 加密。
- 最小權限原則:資料庫帳號僅授予必要權限 (SELECT/INSERT/UPDATE/DELETE)。