适用于: 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
 
相关内容