配置 Azure SQL 数据库的维护时段
适用于: Azure SQL 数据库
可以为 Azure SQL 数据库中的数据库或弹性池配置维护时段,也可以在创建资源后随时配置维护时段。
- 系统默认的维护时段为每日下午 5 点至上午 8 点(资源所在的 Azure 区域的本地时间),以避免在业务高峰期发生中断。
- 如果系统默认的维护时段不是最佳时间,可以选择其他某个可用维护时段。
并非在每个服务级别或每个区域中都可以改用其他维护时段。 有关功能可用性的详细信息,请参阅维护时段可用性。
重要
配置维护时段是一种长期运行的异步操作,类似于更改 Azure SQL 资源的服务层级。 该资源在操作过程中可用,只在操作结束时会发生短暂的重新配置,即使在长期运行的事务中断的情况下,通常最多也仅持续 8 秒。 若要将重新配置的影响降至最低,应在高峰时段之外执行操作。
在创建数据库期间配置维护时段
若要在创建数据库或弹性池时配置维护时段,请在“其他设置”页上设置所需的“维护时段”。
创建单一数据库或弹性池时设置维护时段
有关创建新数据库或池的分步操作信息,请参阅创建 Azure SQL 数据库单一数据库。
以下示例演示如何使用 Azure PowerShell 配置维护时段。 可以安装 Azure PowerShell。
发现可用维护时段
设置维护时段时,每个区域会提供自己的维护时段选项,这些选项对应于数据库或池所在区域的时区。
发现 SQL 数据库和弹性池维护时段
以下示例使用 Get-AzMaintenancePublicConfiguration cmdlet 返回 chinaeast2 区域的可用维护时段。 对于数据库和弹性池,请将 MaintenanceScope
设置为 SQLDB
。
$location = "chinaeast2"
Write-Host "Available maintenance schedules in ${location}:"
$configurations = Get-AzMaintenancePublicConfiguration
$configurations | ?{ $_.Location -eq $location -and $_.MaintenanceScope -eq "SQLDB"}
在创建单一数据库时设置维护时段
以下示例使用 New-AzSqlDatabase cmdlet 创建一个新数据库并设置维护时段。 必须将 -MaintenanceConfigurationId
设置为对你的数据库所在区域有效的值。 若要获取对区域有效的值,请参阅发现可用维护时段。
# Set variables for your database
$resourceGroupName = "your_resource_group_name"
$serverName = "your_server_name"
$databaseName = "your_db_name"
# Set selected maintenance window
$maintenanceConfig = "SQL_ChinaEast2_DB_1"
Write-host "Creating a standard-series (Gen5) 2 vCore database with maintenance window ${maintenanceConfig} ..."
$database = New-AzSqlDatabase `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Edition GeneralPurpose `
-ComputeGeneration Gen5 `
-VCore 2 `
-MaintenanceConfigurationId $maintenanceConfig
$database
在创建弹性池时设置维护时段
以下示例使用 New-AzSqlElasticPool cmdlet 创建一个新弹性池并设置维护时段。 该维护时段是针对弹性池设置的,因此该池中的所有数据库都采用该池的维护时段计划。 必须将 -MaintenanceConfigurationId
设置为对你的池所在区域有效的值。 若要获取对区域有效的值,请参阅发现可用维护时段。
# Set variables for your pool
$resourceGroupName = "your_resource_group_name"
$serverName = "your_server_name"
$poolName = "your_pool_name"
# Set selected maintenance window
$maintenanceConfig = "SQL_ChinaEast2_DB_2"
Write-host "Creating a Standard 50 pool with maintenance window ${maintenanceConfig} ..."
$pool = New-AzSqlElasticPool `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-ElasticPoolName $poolName `
-Edition "Standard" `
-Dtu 50 `
-DatabaseDtuMin 10 `
-DatabaseDtuMax 20 `
-MaintenanceConfigurationId $maintenanceConfig
$pool
以下示例演示如何使用 Azure CLI 配置维护时段。 可以安装 Azure CLI。
登录 Azure
使用以下脚本通过其他订阅登录,将 <Subscription ID>
替换为 Azure 订阅 ID。 如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
subscription="<subscriptionId>" # add subscription here
az account set -s $subscription # ...or use 'az login'
有关详细信息,请参阅设置有效的订阅或以交互方式登录
发现可用维护时段
设置维护时段时,每个区域会提供自己的维护时段选项,这些选项对应于数据库或池所在区域的时区。
发现 SQL 数据库和弹性池维护时段
以下示例使用 az maintenance public-configuration list 命令返回 chinaeast2 区域的可用维护时段。 对于数据库和弹性池,请将 maintenanceScope
设置为 SQLDB
。
location="chinaeast2"
az maintenance public-configuration list --query "[?location=='$location'&&contains(maintenanceScope,'SQLDB')]"
在创建单一数据库时设置维护时段
以下示例使用 az sql db create 命令创建一个新数据库并设置维护时段。 必须将 --maint-config-id
(或 -m
)设置为对你的数据库所在区域有效的值。 若要获取对区域有效的值,请参阅发现可用维护时段。
# Set variables for your database
resourceGroupName="your_resource_group_name"
serverName="your_server_name"
databaseName="your_db_name"
# Set selected maintenance window
maintenanceConfig="SQL_ChinaEast2_DB_1"
# Create database
az sql db create \
--resource-group $resourceGroupName \
--server $serverName \
--name $databaseName \
--edition GeneralPurpose \
--family Gen5 \
--capacity 2 \
--maint-config-id $maintenanceConfig
在创建弹性池时设置维护时段
以下示例使用 az sql elastic-pool create cmdlet 创建一个新弹性池并设置维护时段。 该维护时段是针对弹性池设置的,因此该池中的所有数据库都采用该池的维护时段计划。 必须将 --maint-config-id
(或 -m
)设置为对你的池所在区域有效的值。 若要获取对区域有效的值,请参阅发现可用维护时段。
# Set variables for your pool
resourceGroupName="your_resource_group_name"
serverName="your_server_name"
poolName="your_pool_name"
# Set selected maintenance window
maintenanceConfig="SQL_ChinaEast2_DB_2"
# Create elastic pool
az sql elastic-pool create \
--resource-group $resourceGroupName \
--server $serverName \
--name $poolName \
--edition GeneralPurpose \
--family Gen5 \
--capacity 2 \
--maint-config-id $maintenanceConfig
为现有数据库配置维护时段
将所选的维护时段应用于数据库时,在某些情况下可能会经历短暂的重新配置过程(几秒钟),因为 Azure 要应用所需的更改。
以下步骤使用 Azure 门户对现有数据库或弹性池设置维护时段:
为现有数据库或弹性池设置维护时段
导航到要为其设置维护时段的 SQL 数据库或弹性池。
在设置菜单中选择维护,然后选择所需的维护时段。
为现有数据库设置维护时段
以下示例使用 Set-AzSqlDatabase cmdlet 对现有数据库设置维护时段。
必须将 -MaintenanceConfigurationId
设置为对你的数据库所在区域有效的值。 若要获取对区域有效的值,请参阅发现可用维护时段。
# Select different maintenance window
$maintenanceConfig = "SQL_ChinaEast2_DB_2"
Write-host "Changing database maintenance window to ${maintenanceConfig} ..."
$database = Set-AzSqlDatabase `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-MaintenanceConfigurationId $maintenanceConfig
$database
对现有弹性池设置维护时段
以下示例使用 Set-AzSqlElasticPool cmdlet 对现有弹性池设置维护时段。
请务必确保 $maintenanceConfig
值对于你的池所在区域有效。 若要获取对区域有效的值,请参阅发现可用维护时段。
# Select different maintenance window
$maintenanceConfig = "SQL_ChinaEast2_DB_1"
Write-host "Changing pool maintenance window to ${maintenanceConfig} ..."
$pool = Set-AzSqlElasticPool `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-ElasticPoolName $poolName `
-MaintenanceConfigurationId $maintenanceConfig
$pool
以下示例演示如何使用 Azure CLI 配置维护时段。 可以安装 Azure CLI。
为现有数据库设置维护时段
以下示例使用 az sql db update 命令对现有数据库设置维护时段。 必须将 --maint-config-id
(或 -m
)设置为对你的数据库所在区域有效的值。 若要获取对区域有效的值,请参阅发现可用维护时段。
# Select different maintenance window
maintenanceConfig="SQL_ChinaEast2_DB_2"
# Update database
az sql db update \
--resource-group $resourceGroupName \
--server $serverName \
--name $databaseName \
--maint-config-id $maintenanceConfig
对现有弹性池设置维护时段
以下示例使用 az sql elastic-pool update 命令对现有弹性池设置维护时段。
请务必确保 maintenanceConfig
值对于你的池所在区域有效。 若要获取对区域有效的值,请参阅发现可用维护时段。
# Select different maintenance window
maintenanceConfig="SQL_ChinaEast2_DB_1"
# Update pool
az sql elastic-pool update \
--resource-group $resourceGroupName \
--server $serverName \
--name $poolName \
--maint-config-id $maintenanceConfig
清理资源
如果在本教程中创建 Azure SQL 资源,请确保在完成本教程后删除不需要的资源,以避免不必要的费用。
- 导航到不再需要的 SQL 数据库或弹性池。
- 在“概述”菜单中,选择用于删除该资源的选项。
# Delete database
Remove-AzSqlDatabase `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName
# Delete elastic pool
Remove-AzSqlElasticPool `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-ElasticPoolName $poolName
az sql db delete \
--resource-group $resourceGroupName \
--server $serverName \
--name $databaseName
az sql elastic-pool delete \
--resource-group $resourceGroupName \
--server $serverName \
--name $poolName
相关内容