Autoscaling Azure SQL Database Autoscaling Azure SQL Database azure azure

Autoscaling Azure SQL Database


After digging through the articles in @ErikEJ's answer (Thanks!) I was able to find the following, which appears to be newly published with the release of the Elastic Scale preview:

Changing Database Service Tiers and Performance Levels

The following REST APIs are now newly available as well, which let you do pretty much whatever you want to your databases:

REST API Operations for Azure SQL Databases

And for my original question of scaling service tiers (ex. P1 -> P3 -> P1):

Update Database REST API

With these new developments I am going to assume it's only a matter of time before autoscaling is also available as a simple configuration in the Azure Portal, much like cloud services.


Another way to do it is using Azure automation and using run book below:

param(    # Desired Azure SQL Database edition {Basic, Standard, Premium}    [parameter(Mandatory=$true)]     [string] $Edition,    # Desired performance level {Basic, S0, S1, S2, P1, P2, P3}    [parameter(Mandatory=$true)]     [string] $PerfLevel)inlinescript{    # I only care about 1 DB so, I put it into variable asset and access from here    $SqlServerName = Get-AutomationVariable -Name 'SqlServerName'    $DatabaseName = Get-AutomationVariable -Name 'DatabaseName'    Write-Output "Begin vertical scaling script..."    # Establish credentials for Azure SQL Database server     $Servercredential = new-object System.Management.Automation.PSCredential("yourDBadmin", ("YourPassword" | ConvertTo-SecureString -asPlainText -Force))     # Create connection context for Azure SQL Database server    $CTX = New-AzureSqlDatabaseServerContext -ManageUrl “https://$SqlServerName.database.windows.net” -Credential $ServerCredential    # Get Azure SQL Database context    $Db = Get-AzureSqlDatabase $CTX –DatabaseName $DatabaseName    # Specify the specific performance level for the target $DatabaseName    $ServiceObjective = Get-AzureSqlDatabaseServiceObjective $CTX -ServiceObjectiveName "$Using:PerfLevel"    # Set the new edition/performance level    Set-AzureSqlDatabase $CTX –Database $Db –ServiceObjective $ServiceObjective –Edition $Using:Edition -Force    # Output final status message    Write-Output "Scaled the performance level of $DatabaseName to $Using:Edition - $Using:PerfLevel"    Write-Output "Completed vertical scale"}


Ref:
Azure Vertically Scale Runbook
Setting schedule when u want to scale up/down.
For me, I used 2 schedules with input parameters, 1 for scaling up and another one for scaling down.
Hope that help.