可以使用 Azure 门户、Azure CLI、PowerShell 或 Transact-SQL 将 Azure SQL 数据库中的现有数据库转换为“超大规模”。
在 Azure 门户中,您可以通过修改数据库的服务层,将其转换为“超大规模”。
- 导航到希望在 Azure 门户中转换的数据库。
- 在左侧导航栏中,选择“计算 + 存储”。
- 选择 服务层 下拉列表以展开服务层级的选项。
- 如果您使用的是 Azure SQL 数据库免费套餐,请选择按钮以移除 免费数据库套餐。 然后,你将看到 服务层 下拉列表。
- 从下拉列表中选择“超大规模”。
- 查看“计算层”,然后选择“已预配”或“无服务器”。
- 查看“直接转换模式”,这是特定于向超大规模转换的选项。
- 在数据库准备好转换为Hyperscale后进行切换。 直接转换模式确定何时将暂时中断与现有 Azure SQL 数据库的连接,以实现向“超大规模”的转换:
- 自动切换 在超大规模数据库准备就绪后立即完成切换。
- 手动切换 会提示你在 Azure 门户中自行选择时间启动切换。 此选项最适用于安排转换时间,以尽量减少业务中断。
- 查看列出的 硬件配置。 如果需要,请选择 更改配置,以选择适合您工作负荷的硬件配置。
- 如果要更改“超大规模”服务层级下数据库可用的 vCore 数,请选择 vCore 滑块。
- 如果要更改“超大规模”服务层级下的副本数,请选择 High-Availability 次要副本 滑块。
- 选择 应用。
- 在 Azure 门户中监视转换。
- 在 Azure 门户中导航到数据库。
- 在左侧导航栏中,选择 概述。
- 查看右窗格底部 通知 章节。 如果操作正在进行,将显示一个通知框。
- 选择通知框以查看详细信息。
- 此时将打开“正在进行的操作”窗格。 查看正在进行的作业的详细信息。
如果选择了 手动直接转换,Azure 门户将在准备就绪时显示 “直接转换 ”按钮。
此代码示例调用 az sql db update 将现有 Azure SQL 数据库转换为“超大规模”。 必须同时指定版本和服务目标。 运行以下代码示例之前,请将 resourceGroupName
、serverName
、databaseName
和 serviceObjective
替换为相应的值:
resourceGroupName="myResourceGroup"
serverName="server01"
databaseName="mySampleDatabase"
serviceObjective="HS_Gen5_2"
az sql db update -g $resourceGroupName -s $serverName -n $databaseName \
--edition Hyperscale --service-objective $serviceObjective
使用 --manual-cutover
选择在所选时间手动启动向超大规模的直接转换。 此选项最适用于安排转换时间,以尽量减少业务中断。 例如:
resourceGroupName="myResourceGroup"
serverName="server01"
databaseName="mySampleDatabase"
serviceObjective="HS_Gen5_2"
az sql db update -g $resourceGroupName -s $serverName -n $databaseName --edition Hyperscale --service-objective $serviceObjective --manual-cutover
使用 az sql db op list 监视正在进行的操作,以返回 Azure SQL 数据库中数据库最近或正在进行的操作。
resourceGroupName="myResourceGroup"
serverName="server01"
databaseName="mySampleDatabase"
az sql db op list -g $resourceGroupName -s $serverName -n $databaseName
在超大规模数据库就绪后,立即使用 --perform-cutover
启动直接转换(在 3 天内):
az sql db update -g $resourceGroupName -s $serverName -n $databaseName --perform-cutover
以下示例使用 Set-AzSqlDatabase cmdlet 将现有 Azure SQL 数据库转换为“超大规模”。 必须同时指定版本和服务目标。 运行此代码示例之前,请将 $resourceGroupName
、$serverName
、$databaseName
和 $serviceObjective
替换为相应的值:
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
$serviceObjective = "HS_Gen5_2"
Set-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Edition "Hyperscale" `
-RequestedServiceObjectiveName $serviceObjective
使用 -ManualCutover
在所选时间手动启动直接转换。 此选项最适用于安排转换时间,以尽量减少业务中断。 例如:
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
$serviceObjective = "HS_Gen5_2"
Set-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Edition "Hyperscale" `
-RequestedServiceObjectiveName $serviceObjective `
-ManualCutover
使用 Get-AzSqlDatabaseActivity cmdlet 监视正在进行的操作,该 cmdlet 返回 Azure SQL 数据库中的一个数据库的近期或当前正在进行的操作。 运行示例代码之前,请将 $resourceGroupName
、$serverName
和 $databaseName
参数设置为数据库的相应值:
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
Get-AzSqlDatabaseActivity -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName
在超大规模数据库准备就绪后,使用 -PerformCutover
启动切换:
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
$serviceObjective = "HS_Gen5_2"
Set-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Edition "Hyperscale" `
-RequestedServiceObjectiveName $serviceObjective `
-PerformCutover
若要使用 Transact-SQL 将现有 Azure SQL 数据库转换为“超大规模”,请先使用适用于 Azure SQL 数据库的 Azure 门户查询编辑器、SQL Server Management Studio (SSMS)或 Visual Studio Code 的 mssql 扩展连接到master
逻辑 SQL 服务器上的数据库。
必须在 ALTER DATABASE 语句中指定版本和服务目标。
此示例语句使用 mySampleDatabase
服务目标将名为 HS_Gen5_2
的数据库转换为“超大规模”。 在执行语句之前,请将数据库名称替换为相应的值。
ALTER DATABASE [mySampleDatabase]
MODIFY (EDITION = 'Hyperscale', SERVICE_OBJECTIVE = 'HS_Gen5_2');
GO
默认情况下,数据库会在“超大规模”数据库可用后立即切换到该数据库,以完成转换。 可以选择使用 MANUAL_CUTOVER
参数来改为启动一项转换,而该转换将在所选时间通过手动启动的直接转换结束。 此选项最适用于安排转换时间,以尽量减少业务中断。 例如:
ALTER DATABASE [mySampleDatabase]
MODIFY (EDITION = 'Hyperscale', SERVICE_OBJECTIVE = 'HS_Gen5_2')
WITH MANUAL_CUTOVER;
为了监视超大规模数据库的操作,请连接到 master
的 数据库,并查询 sys.dm_operation_status。 sys.dm_operation_status
会报告数据库操作的进度,包括转换为超大规模。 如果选择 MANUAL_CUTOVER
,则 sys.dm_operation_status
视图包括其他信息。
SELECT *
FROM sys.dm_operation_status
WHERE major_resource_id = 'mySampleDatabase'
ORDER BY start_time DESC;
GO
准备好手动直接转换后,phase_desc
将为 WaitingForCutover
。 使用 PERFORM_CUTOVER
参数启动直接转换:
ALTER DATABASE [mySampleDatabase] PERFORM_CUTOVER;