重啟伺服器後,SQL Server 服務(MSSQLSERVER)未自動啟動。手動啟動時彈出錯誤:
「由於登入失敗而無法啟動服務」
「發生錯誤 1069:由於登入失敗而無法啟動服務」
SQL Server 服務設定為使用特定 Windows 帳號登入(預設常為 Administrator 或自訂帳號)。當該帳號的**密碼變更**後,服務仍嘗試使用舊密碼登入,導致驗證失敗、服務無法啟動。
將 Administrator 密碼設為空白,服務若使用 Administrator 登入即可通過。缺點:嚴重違反密碼策略,生產環境嚴禁。
缺點:每次變更密碼都需手動同步,極易遺漏。
sqlsvc,設定強密碼、密碼永不過期。sqlsvc 加入 Administrators 群組(SQL Server 需本機管理員權限)。sqlsvc。優點:隔離服務帳號,避免 Administrator 密碼變更影響。缺點:仍需定期輪換密碼並同步。
現代 Windows 提供兩種免密碼管理的帳號類型:
| 帳號類型 | 格式 | 適用版本 | 特點 |
|---|---|---|---|
| 虛擬服務帳號 (VSA) | NT SERVICE\MSSQLSERVER | SQL 2012+ / Win 2008 R2+ | 自動管理密碼、具網路身分、無需加入管理員群組(授權 Perform volume maintenance tasks 等必要權限即可) |
| 群組受控服務帳號 (gMSA) | DOMAIN\gMSA_Name$ | Win 2012+ / SQL 2014+ | 跨伺服器共用、自動輪換密碼、適合 AlwaysOn/叢集環境 |
NT SERVICE\MSSQLSERVER(預設實例)或 NT SERVICE\MSSQL$INSTANCE_NAME(具名實例)。.mdf、.ldf、備份目錄、錯誤日誌目錄需有完整存取權(NTFS ACL)。REM 查詢服務登入帳號
sc qc MSSQLSERVER
REM 修改為虛擬服務帳號 (需管理員權限 CMD)
sc config MSSQLSERVER obj= "NT SERVICE\MSSQLSERVER" password= ""
REM 重啟服務
net stop MSSQLSERVER && net start MSSQLSERVER