Overview
Learn how to deploy an Azure SQL Database using Azure Portal, Azure CLI, and ARM templates. This tutorial walks you through prerequisites, step‑by‑step deployment, and post‑deployment verification.
Prerequisites
- Azure subscription (free trial works)
- Azure CLI installed (
az) - Basic knowledge of SQL Server
- Resource Group where the database will reside
Deploy via Azure Portal
1
Open Azure Portal and click Create a resource.
2
Select Databases > Azure SQL and click Create.
3
Configure the following:
- Subscription: Choose your subscription
- Resource group: Select or create a new one
- Database name:
mySampleDb - Server: Create a new server (provide server name, admin login, password, and region)
- Compute + storage: Choose the appropriate tier (e.g., General Purpose, 5 DTUs)
4
Click Review + create then Create. Deployment takes a few minutes.
Deploy via Azure CLI
Bash
PowerShell
# Variables
RESOURCE_GROUP="myResourceGroup"
SERVER_NAME="myazuresqlserver$(date +%s)"
LOCATION="eastus"
ADMIN_USER="sqladmin"
ADMIN_PASS="P@ssw0rd1234"
DB_NAME="mySampleDb"
# Create resource group
az group create --name $RESOURCE_GROUP --location $LOCATION
# Create SQL server
az sql server create \
--name $SERVER_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--admin-user $ADMIN_USER \
--admin-password $ADMIN_PASS
# Allow Azure services to access the server
az sql server firewall-rule create \
--resource-group $RESOURCE_GROUP \
--server $SERVER_NAME \
--name AllowAzureServices \
--start-ip-address 0.0.0.0 \
--end-ip-address 0.0.0.0
# Create database
az sql db create \
--resource-group $RESOURCE_GROUP \
--server $SERVER_NAME \
--name $DB_NAME \
--service-objective S0
echo "Deployment complete. Server: $SERVER_NAME, Database: $DB_NAME"
# Variables
$resourceGroup = "myResourceGroup"
$serverName = "myazuresqlserver$([int][Math]::Floor((Get-Date).ToUniversalTime().Subtract([datetime]'1970-01-01').TotalSeconds))"
$location = "EastUS"
$adminUser = "sqladmin"
$adminPass = ConvertTo-SecureString "P@ssw0rd1234" -AsPlainText -Force
$dbName = "mySampleDb"
# Create resource group
New-AzResourceGroup -Name $resourceGroup -Location $location
# Create SQL server
New-AzSqlServer -ResourceGroupName $resourceGroup `
-ServerName $serverName `
-Location $location `
-SqlAdministratorCredentials (New-Object System.Management.Automation.PSCredential($adminUser,$adminPass))
# Allow Azure services
New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroup `
-ServerName $serverName `
-FirewallRuleName "AllowAzureServices" `
-StartIpAddress "0.0.0.0" -EndIpAddress "0.0.0.0"
# Create database
New-AzSqlDatabase -ResourceGroupName $resourceGroup `
-ServerName $serverName `
-DatabaseName $dbName `
-RequestedServiceObjectiveName "S0"
Write-Host "Deployment complete. Server: $serverName, Database: $dbName"
Deploy via ARM Template
Save the JSON below as azuredeploy.json and run the deployment command.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"serverName": { "type": "string" },
"adminUser": { "type": "string" },
"adminPassword": { "type": "secureString" },
"databaseName": { "type": "string" },
"location": { "type": "string", "defaultValue": "eastus" }
},
"resources": [
{
"type": "Microsoft.Sql/servers",
"apiVersion": "2022-05-01-preview",
"name": "[parameters('serverName')]",
"location": "[parameters('location')]",
"properties": {
"administratorLogin": "[parameters('adminUser')]",
"administratorLoginPassword": "[parameters('adminPassword')]",
"version": "12.0"
}
},
{
"type": "Microsoft.Sql/servers/firewallRules",
"apiVersion": "2022-05-01-preview",
"name": "[concat(parameters('serverName'), '/AllowAzureServices')]",
"properties": {
"startIpAddress": "0.0.0.0",
"endIpAddress": "0.0.0.0"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]"
]
},
{
"type": "Microsoft.Sql/servers/databases",
"apiVersion": "2022-05-01-preview",
"name": "[concat(parameters('serverName'), '/', parameters('databaseName'))]",
"properties": {
"collation": "SQL_Latin1_General_CP1_CI_AS",
"maxSizeBytes": "1073741824"
},
"sku": {
"name": "S0",
"tier": "Standard"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]"
]
}
]
}
Deploy with:
az deployment group create \
--name DeployAzureSQL \
--resource-group myResourceGroup \
--template-file azuredeploy.json \
--parameters serverName=myazuresqlserver adminUser=sqladmin adminPassword=P@ssw0rd1234 databaseName=mySampleDb
Post‑deployment Verification
- Connect with
sqlcmdor SSMS using the server name<serverName>.database.windows.net. - Run
SELECT DB_NAME();to confirm the database. - Enable firewall rule for your IP if needed.