企業環境部署數十台 SQL Server 時,手動逐步點選不僅耗時、易出錯,更難保證配置一致性。SQL Server 2008 引入 ConfigurationFile.ini 機制,支援完全自動化、參數化的安裝流程。
此時安裝程式會將所有設定寫入指定路徑的 ConfigurationFile.ini,且**不會實際安裝任何檔案**。
預設路徑通常在:
C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\YYYYMMDD_HHMMSS\ConfigurationFile.ini
建議依用途分類保存多個模板:
Config_Standard.ini:標準 OLTP 實例Config_DW.ini:資料倉庫(啟用 Columnstore、資料壓縮)Config_RS.ini:含 Reporting ServicesConfig_FailoverCluster.ini:容錯移轉叢集節點Setup.exe /Q /ACTION=Install /CONFIGURATIONFILE="C:\Install\Config_Standard.ini" ^
/SQLSVCPASSWORD="P@ssw0rd_SQL" ^
/AGTSVCPASSWORD="P@ssw0rd_Agent" ^
/ASSVCPASSWORD="P@ssw0rd_AS" ^
/ISSVCPASSWORD="P@ssw0rd_IS" ^
/RSSVCPASSWORD="P@ssw0rd_RS" ^
/SAPWD="P@ssw0rd_SA" ^
/IACCEPTSQLSERVERLICENSETERMS
| 參數 | 用途 | 備註 |
|---|---|---|
| /Q | 安靜模式(無 UI) | 生產環境自動化必加 |
| /ACTION=Install | 安裝動作 | 也可用 AddNode, Repair, Uninstall |
| /CONFIGURATIONFILE | 指定設定檔路徑 | 若檔在同目錄可省略路徑 |
| /SQLSVCPASSWORD 等 | 服務帳戶密碼 | **INI 檔不含密碼**,必須命令列補充 |
| /SAPWD | sa 帳戶密碼 | 混合模式驗證時必要 |
| /IACCEPTSQLSERVERLICENSETERMS | 接受授權條款 | 無人值守必加 |
Read-Host -AsSecureString 互動輸入,或從 Azure Key Vault / HashiCorp Vault 取得$pwd = Read-Host -AsSecureString "SQL Service Password"; Setup.exe ... /SQLSVCPASSWORD=$pwd同一份 ConfigurationFile.ini 部署至所有節點,確保:
REM 節點 1:建立叢集
Setup.exe /Q /ACTION=InstallFailoverCluster /CONFIGURATIONFILE="FCI_Node1.ini" /IACCEPTSQLSERVERLICENSETERMS
REM 節點 2~N:加入叢集
Setup.exe /Q /ACTION=AddNode /CONFIGURATIONFILE="FCI_AddNode.ini" /IACCEPTSQLSERVERLICENSETERMS
先在節點 1 捕獲完整設定,後續節點僅需 AddNode 設定檔,大幅簡化叢集擴展。
| 問題 | 原因 | 解決 |
|---|---|---|
| 安裝靜默失敗、無錯誤訊息 | /Q 隱藏 UI 錯誤 | 移除 /Q,改用 /QS (Show UI but no interaction) 觀察錯誤 |
| 服務啟動失敗 | 密碼錯誤或帳戶無「登入為服務」權限 | 預先用 GPO 授權服務帳戶;驗證密碼複雜度符合網域政策 |
| 功能缺失(如無 RS) | INI 檔 FEATURES 未包含 | 重新互動式安裝至準備頁面,勾選所需功能後取消產生新 INI |
| 叢集 AddNode 失敗 | 共用磁碟未上線、網路名稱衝突 | 先驗證叢集驗證報告;確認 IP、網路名稱唯一 |
掌握 ConfigurationFile.ini 機制,讓 SQL Server 部署從「手工藝」進化為「工業化標準流程」,是 DBA 邁向自動化運維的關鍵里程碑。