共用方式為


Azure VM 上的 SQL Server 無法部署或 SQL Server 實例無法上線

本文可協助您解決下列案例:

  • Azure 虛擬機上的 SQL Server(VM) Azure Marketplace 映射無法部署。
  • 在 Azure VM 重新啟動或解除分配之後,SQL Server 實例無法上線。

適用於: Azure VM 上的 SQL Server

備註

此問題的調查正在進行中。 隨著新的詳細數據可供使用,本文中的資訊可能會有所變更。

徵狀

如果您遇到此問題,您可能會看到:

  • 使用 Azure Marketplace 映射時,Azure VM 上的 SQL Server 部署失敗。
  • 在手動安裝的 SQL Server 實例中,Azure VM 重新啟動後,SQL Server 未能成功上線。

在 Azure VM 上部署的 SQL Server 失敗

當您嘗試從 Azure Marketplace 部署 Azure VM 映像文件上的 SQL Server 時,部署失敗,並出現狀態為 Conflict 的以下錯誤:

系統磁碟傳回的狀態尚未可使用。

例如,如果您要從 Azure 入口網站部署映像,您可能會在 活動記錄中看到下列部署錯誤:

Azure 入口網站中部署錯誤的螢幕快照。

警告

發生此失敗時,Azure VM 部署會成功,但 SQL Server 安裝會失敗。 您必須刪除虛擬機器,以避免產生費用。 使用 「解決方案 」或 「因應措施 」一節中所述的方法之一重新部署虛擬機器。

VM 重新啟動之後,SQL Server 無法上線

在遵循此事件序列之後,您可能會看到此問題:

  1. 您可以從 受影響的 VM 清單部署 Azure VM。
  2. 您手動將 SQL Server 實例安裝到 Azure VM。
  3. 您可以將 SQL Server tempdb 資料庫設定為使用本機 SSD 暫時記憶體(通常是 D: 磁碟驅動器)。
  4. 您的 VM 已重新啟動或解除分配。
  5. 您的 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 大小。 若要解決此問題,請使用下列其中一種方法:

  • 可能的話,請使用另一個 VM SKU,例如 VM 大小最佳做法中列出的 SKU。
  • 如果您想要使用 受影響的 VM 清單上的特定 VM,請使用名稱中沒有小寫 d 的電腦,其會放在 tempdb 與 SQL Server 資料檔相同的記憶體上。 例如,使用 FXmsv2 VM 大小,而不是 FXmdsv2。 後者使用未初始化的臨時存儲,如 d 名稱所示。

因應措施

如果您無法在沒有 RAW 本機 SSD 的情況下使用另一個 VM SKU,請考慮下列因應措施:

  • 使用僅限 Windows Server 的映像部署 VM、 格式化並初始化暫存 NVMe 磁碟驅動器,然後手動安裝 SQL Server。

    • 如果您選擇放在 tempdb 本機 SSD 上,則每次重新啟動或解除配置 VM 時,都必須先重新啟動磁碟,才能啟動 SQL Server。
  • 部署 SQL Server VM 映像,但設定 tempdb 為在部署期間使用與暫時性儲存體不同的磁碟機。 例如,您可以設定 tempdb 為使用 C: 磁碟機或遠端儲存磁碟機。

    1. 部署 SQL Server VM 映像時,您可以在 Azure 入口網站的 [SQL Server 設定] 頁面上設定此設定。

    2. 在 [ 儲存體設定] 底下,選取 [ 變更設定] 以開啟 [設定儲存體] 窗格。

    3. 展開 tempdb 儲存體 ,然後選擇下列以外的 任何選項Use local SSD drive

      部署 SQL VM 映像時 Azure 入口網站中 tempdb 儲存體設定的螢幕擷取畫面。

受影響的 VM

部署未初始化暫存磁碟機的 VM 會發生此問題,例如下列 VM 大小:

英特爾 10.2 代 AMD 第 9.1 代
Dldsv6 Daldsv6
Ddsv6 Dadsv6
Edsv6 Eadsv6
Lsv3 - 所有 Azure VM
Fxmdsv2

備註

安裝 SQL Server 之前,請確定未使用大於 4 KB 的扇區大小 來設定 VM。