Skip to main content

Remediation

When an Azure SQL Database is identified as underutilized, two primary remediation strategies can be considered:

  • Resize the database to a lower service tier.
  • Migrate the database into an Elastic Pool for consolidated resource management.
  • Convert a vCore-based database to Serverless to optimize for intermittent or unpredictable workloads.

Before making changes, confirm that the workload does not have periodic spikes or upcoming growth that may require the current configuration.

Resize the Databaseโ€‹

From Azure CLIโ€‹

az sql db update \
--resource-group {{resource-group}} \
--server {{server-name}} \
--name {{database-name}} \
[--edition {{Standard}}] \
[--capacity {{10}}] \
[--max-size {{250GB}}]
[--family {{Gen5}}] \

From PowerShellโ€‹

Set-AzSqlDatabase `
-ResourceGroupName "{{resource-group}}" `
-ServerName "{{server-name}}" `
-DatabaseName "{{database-name}}" `
[-Edition "{{Standard}}"] `
[-RequestedServiceObjectiveName "{{S0}}"] `
[-Capacity {{2}}] `
[-MaxSizeBytes {{268435456000}}]

Migrate the Database into an Elastic Poolโ€‹

From Azure CLIโ€‹

(If required) Create an Elastic Poolโ€‹

az sql elastic-pool create \
--resource-group {{resource-group}} \
--server {{server-name}} \
--name {{pool-name}} \
[--edition {{Standard}}] \
[--capacity {{50}}] \
[--db-dtu-min {{0}}] \
[--db-dtu-max {{20}}] \
[--storage {{250GB}}]

Add the Database to an Elastic Poolโ€‹

az sql db update \
--resource-group {{resource-group}} \
--server {{server-name}} \
--name {{database-name}} \
--elastic-pool {{pool-name}}

From PowerShellโ€‹

(If required) Create an Elastic Poolโ€‹

New-AzSqlElasticPool `
-ResourceGroupName "{{resource-group}}" `
-ServerName "{{server-name}}" `
-ElasticPoolName "{{pool-name}}" `
[-Edition "{{Standard}}"] `
[-Dtu {{50}}] `
[-DatabaseDtuMin {{0}}] `
[-DatabaseDtuMax {{20}}] `
[-VCore {{4}}] `
[-ComputeGeneration "{{Gen5}}"] `
[-StorageMB {{256000}}]

Add the Database to an Elastic Poolโ€‹

Set-AzSqlDatabase `
-ResourceGroupName "{{resource-group}}" `
-ServerName "{{server-name}}" `
-DatabaseName "{{database-name}}" `
-ElasticPoolName "{{pool-name}}"

Convert vCore-based Database to Serverlessโ€‹

From Azure CLIโ€‹

az sql db update \
--resource-group {{resource-group}} \
--server {{server-name}} \
--name {{database-name}} \
--edition {{GeneralPurpose}} \
--compute-model Serverless \
--family {{Gen5}} \
--capacity {{2}} \
--auto-pause-delay {{60}} \
--min-capacity {{0.5}} \
--max-size {{250GB}}

From PowerShellโ€‹

Set-AzSqlDatabase `
-ResourceGroupName "{{resource-group}}" `
-ServerName "{{server-name}}" `
-DatabaseName "{{database-name}}" `
-Edition "{{GeneralPurpose}}" `
-ComputeModel "Serverless" `
-VCore {{2}} `
-ComputeGeneration "{{Gen5}}" `
-AutoPauseDelay {{60}} `
-MinVCore {{0.5}} `
-MaxSizeBytes {{268435456000}}