適用於: Azure VM 上的 SQL Server
總結
Azure 虛擬機(VM)上的 SQL Server 可能會因錯誤訊息「System Drive 返回狀態 未準備好使用」而無法從 Azure Marketplace 映像部署。手動安裝的 SQL Server 實例在虛擬機重新啟動或解除配置後也可能無法上線。 這些失敗發生在 SQL Server 無法在無法使用的本地臨時儲存上初始化資料庫tempdb時。 本文將協助你解決或繞過這些失敗。
備註
此問題的調查正在進行中。 隨著新的詳細數據可供使用,本文中的資訊可能會有所變更。
徵狀
如果您遇到此問題,您可能會看到:
- 使用 Azure Marketplace 映射時,Azure VM 上的 SQL Server 部署失敗。
- 在手動安裝的 SQL Server 實例中,Azure VM 重新啟動後,SQL Server 未能成功上線。
在 Azure VM 上部署的 SQL Server 失敗
當您嘗試從 Azure Marketplace 部署 Azure VM 映像文件上的 SQL Server 時,部署失敗,並出現狀態為 Conflict 的以下錯誤:
系統磁碟傳回的狀態尚未可使用。
例如,如果您要從 Azure 入口網站部署映像,您可能會在 活動記錄中看到下列部署錯誤:
{
"status": "Failed",
"error": {
"code": "Ext_StorageConfigurationSettings_ApplyNewTempDbSettingsError",
"message": "Error: 'System Drive returned status not ready for use '"
}
}
VM 重新啟動之後,SQL Server 無法上線
在遵循此事件序列之後,您可能會看到此問題:
- 您可以從 受影響的 VM 清單部署 Azure VM。
- 您手動將 SQL Server 實例安裝到 Azure VM。
- 您可以將 SQL Server
tempdb資料庫設定為使用本機 SSD 暫時記憶體(通常是D:磁碟驅動器)。 - 您的 VM 已重新啟動或解除分配。
- 您的 SQL Server 實例無法上線。
如果您遇到此問題,您可能會在 SQL Server 錯誤記錄檔中看到下列錯誤:
CREATE FILE encountered operating system error 3(The system cannot find the path specified.)
while attempting to open or create the physical file 'D:\SQLTemp\tempdb.mdf'.
Error: 17204, Severity: 16, State: 1. FCB::Open failed: Could not open
file D:\SQLTemp\tempdb.mdf for file number 1. OS error:
3(The system cannot find the path specified.).
Error: 5120, Severity: 16, State: 101.
Unable to open the physical file "D:\SQLTemp\tempdb.mdf". Operating system error 3:
"3(The system cannot find the path specified.)".
Error: 1802, Severity: 16, State: 4 CREATE DATABASE failed.
Some file names listed could not be created. Check related errors.
Could not create tempdb. You may not have enough disk space available.
Free additional disk space by deleting other files on the tempdb drive and then restart SQL Server.
Check for additional errors in the event log that may indicate why the
tempdb files could not be initialized.
原因
某些最新的 Azure VM 規格提供了以 RAW 格式呈現的本機 SSD 卷,作為使用非揮發性記憶體 Express(NVMe)介面配置的暫存存儲。 此設定會導致失敗,因為 SQL Server 嘗試將資料庫放在 tempdb 暫時記憶體上,而且因為本機 SSD 磁碟區無法使用而失敗。 此外,暫存儲存會在解除分配機器之後顯示為RAW格式。
RAW 本機 SSD 磁碟區會導致 SQL VM 部署失敗,並防止在 VM 重新啟動後手動安裝 SQL Server 實例上線。 在這兩種情況下,SQL Server 都會嘗試在暫時性儲存體上初始化 tempdb 資料庫,但此儲存體無法使用。 部署失敗,因為 SQL Server 會在 Azure VM 部署期間安裝,且暫時記憶體無法使用。 同樣地,在 VM 重新啟動之後,手動安裝的 SQL Server 實例無法上線,因為 SQL Server 嘗試建立 tempdb 資料庫時無法使用暫時記憶體。
解決方案
發生此問題的原因是選取的 Azure VM 大小。 若要解決此問題,請使用下列其中一種方法:
- 透過 Windows Server 2022 或更新版本的 Azure 入口部署您的 SQL Server 虛擬機。
- 像 ARM 或 BICEP 模板這類腳本解決方案目前無法解決這個問題。
- Windows Server 2019 及更早版本的映像檔仍持續遇到此問題。
- 可能的話,請使用另一個 VM SKU,例如 VM 大小最佳做法中列出的 SKU。
- 如果您想要使用 受影響的 VM 清單上的特定 VM,請使用名稱中沒有小寫
d的電腦,其會放在tempdb與 SQL Server 資料檔相同的記憶體上。 例如,使用FXmsv2VM 大小,而不是FXmdsv2。 後者使用未初始化的臨時存儲,如d名稱所示。
因應措施
如果您無法在沒有 RAW 本機 SSD 的情況下使用另一個 VM SKU,請考慮下列因應措施:
先用 Windows Server 專用映像檔部署虛擬機,然後用腳本格式化並初始化臨時 NVMe 磁碟,然後手動安裝 SQL Server。
-
如果你選擇安裝
tempdb在本地 SSD,每次虛擬機重啟或解除配置時,你都必須在啟動 SQL Server 前重新初始化磁碟。
-
如果你選擇安裝
部署 SQL Server VM 映像,但設定
tempdb為在部署期間使用與暫時性儲存體不同的磁碟機。 例如,您可以設定tempdb為使用C:磁碟機或遠端儲存磁碟機。部署 SQL Server VM 映像時,您可以在 Azure 入口網站的 [SQL Server 設定] 頁面上設定此設定。
在 [ 儲存體設定] 底下,選取 [ 變更設定] 以開啟 [設定儲存體] 窗格。
展開 tempdb 儲存體 ,然後選擇下列以外的 任何選項
Use local SSD drive:
受影響的 VM
部署未初始化暫存磁碟機的 VM 會發生此問題,例如下列 VM 大小:
| 英特爾 10.2 代 | AMD 第 9.1 代 |
|---|---|
| DDSV6 系列 | Dadsv6 系列 |
| DNDsv6 系列 | Dadsv7系列 |
| Ebdsv6 系列 | DCadsv6 系列 |
| Edsv6 系列 | Eadsv6 系列 |
| Endsv6 系列 | Eadsv7 系列 |
| FXmdsv2 系列 | ECadsv6 系列 |
| Fadsv7 系列 | |
| Famdsv7 系列 |
備註
在安裝 SQL Server 之前,請確保虛擬機的扇區大小沒有超過 4 KB。