本文可帮助你解决下列情境:
- Azure 虚拟机 (VM) Azure 市场映像上的 SQL Server 无法部署。
- 重启或解除分配 Azure VM 后,SQL Server 实例无法联机。
适用于: Azure VM 上的 SQL Server
注释
此问题的调查正在进行中。 随着新的详细信息可用,本文中的信息可能会更改。
症状
如果遇到此问题,可能会看到:
- 在使用 Azure 市场映像的情况下,Azure VM 上的 SQL Server 部署失败。
- 为手动安装的 SQL Server 实例重启 Azure VM 后,SQL Server 无法联机。
Azure VM 上的 SQL Server 部署失败
从 Azure 市场在 Azure VM 映像上尝试部署 SQL Server 时,部署失败,状态显示为 Conflict
,并出现以下错误:
系统驱动器返回的状态显示未准备好使用。
例如,如果要从 Azure 门户部署映像,则可能在 活动日志中看到以下部署错误:
重启 VM 后,SQL Server 无法联机
在遵循以下事件序列后,可能会看到此问题:
- 从 受影响的 VM 列表中部署 Azure VM。
- 将 SQL Server 实例手动安装到 Azure VM。
- 将 SQL Server
tempdb
数据库配置为使用本地 SSD 临时存储(通常为D:
驱动器)。 - 您的虚拟机已重启或已解除分配。
- 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 规格提供了使用非易失性内存 (NVMe) 接口配置的未格式化本地 SSD 卷,用于临时存储。 此配置会导致失败,因为 SQL Server 尝试将 tempdb
数据库放置在临时存储上,并且由于本地 SSD 卷不可用而失败。 此外,临时存储在计算机被解除分配后显示为 RAW。
RAW 本地 SSD 卷会导致 SQL VM 部署失败,并阻止在重启 VM 后手动安装 SQL Server 实例联机。 在这两种情况下,SQL Server 都在尝试初始化 tempdb
瞬态存储上的数据库,但该存储不可用。 部署失败,因为在部署 Azure VM 期间安装了 SQL Server,临时存储不可用。 同样,在重启 VM 后,手动安装的 SQL Server 实例无法联机,因为当 SQL Server 尝试创建 tempdb
数据库时,临时存储不可用。
决议
由于所选的 Azure VM 大小,因此会出现此问题。 若要解决此问题,请使用以下方法之一:
- 如果可能,请使用另一个 VM SKU,例如VM 大小最佳实践中列出的 VM SKU。
- 如果要使用 受影响 VM 列表中的特定 VM,请使用名称中不带小写
d
的计算机,该名称与 SQL Server 数据文件位于tempdb
同一存储中。 例如,使用FXmsv2
VM 大小而不是FXmdsv2
。 后者具有未初始化的临时存储,如d
名称中所示。 - 如果不能在没有 RAW 本地 SSD 的情况下使用另一个 VM SKU,请使用仅限 Windows Server 的映像部署 VM, 格式化并初始化临时 NVMe 驱动器,然后手动安装 SQL Server。 每次重启或解除分配 VM 时,都必须重新初始化磁盘,然后才能启动 SQL Server。
注释
安装 SQL Server 之前,请确保您未将 VM 配置为使用 大于 4 KB 的扇区大小。
受影响的虚拟机
使用未初始化的临时驱动器部署的 VM 会出现此问题,例如以下 VM 大小:
Intel Gen 10.2 | AMD Gen 9.1 |
---|---|
Dldsv6 | Daldsv6 |
Ddsv6 | Dadsv6 |
Edsv6 | Eadsv6 |
Lsv3 - 所有 Azure VM | |
Fxmdsv2 |