Azure Cheatsheet
SQL Database
Use this Azure reference while you build software engineering projects, review code for technical interview prep, or polish examples for a software engineer resume.
Service Tiers
| Tier | Model | Max size | Use case |
|---|---|---|---|
| Serverless | vCore, auto-pause | 4 TB | Dev, intermittent workloads |
| General Purpose | vCore (5th gen) | 4 TB | Most production workloads |
| Business Critical | vCore, local SSD | 4 TB | Low latency, In-Memory OLTP |
| Hyperscale | vCore, distributed | 100 TB | Very large DBs, read scale-out |
| Basic / Standard / Premium | DTU model (legacy) | 1 TB | Simpler pricing, smaller apps |
Prefer vCore (General Purpose / Serverless) for new workloads — more tuning control and reservation discounts.
Create a Server + Database
# Create a logical SQL server az sql server create \ --name mysqlserver \ --resource-group myRG \ --location eastus \ --admin-user sqladmin \ --admin-password "P@ssw0rd1234!" # Allow Azure services through firewall az sql server firewall-rule create \ --server mysqlserver -g myRG \ --name AllowAzureServices \ --start-ip-address 0.0.0.0 \ --end-ip-address 0.0.0.0 # Allow your IP az sql server firewall-rule create \ --server mysqlserver -g myRG \ --name MyIP \ --start-ip-address $(curl -s ifconfig.me) \ --end-ip-address $(curl -s ifconfig.me) # Create a database — General Purpose, 2 vCores az sql db create \ --server mysqlserver -g myRG \ --name mydb \ --edition GeneralPurpose \ --service-objective GP_Gen5_2 \ --max-size 32GB \ --backup-storage-redundancy Local # Create serverless (auto-pause after 1 hour) az sql db create \ --server mysqlserver -g myRG \ --name mydb \ --edition GeneralPurpose \ --service-objective GP_S_Gen5_2 \ --auto-pause-delay 60 # minutes; -1 to disable
List & Inspect
az sql server list -g myRG -o table az sql db list --server mysqlserver -g myRG -o table az sql db show --server mysqlserver -g myRG --name mydb az sql db list-usages --server mysqlserver -g myRG --name mydb -o table
Connection String
# Show ADO.NET connection string az sql db show-connection-string \ --server mysqlserver \ --name mydb \ --client ado.net # Common client options: ado.net, jdbc, odbc, php, php_pdo, sqlcmd # Full connection details az sql server show --name mysqlserver -g myRG \ --query "{FQDN:fullyQualifiedDomainName}" -o tsv # Server: mysqlserver.database.windows.net
Sample connection strings
ADO.NET: Server=tcp:mysqlserver.database.windows.net,1433; Initial Catalog=mydb;Persist Security Info=False; User ID=sqladmin;Password=***; MultipleActiveResultSets=False;Encrypt=True; TrustServerCertificate=False;Connection Timeout=30; JDBC: jdbc:sqlserver://mysqlserver.database.windows.net:1433; database=mydb;user=sqladmin@mysqlserver; password=***;encrypt=true;trustServerCertificate=false; loginTimeout=30; ODBC (for pyodbc): Driver={ODBC Driver 18 for SQL Server}; Server=mysqlserver.database.windows.net,1433; Database=mydb;Uid=sqladmin;Pwd=***;Encrypt=yes;
Scaling
# Scale up database az sql db update \ --server mysqlserver -g myRG --name mydb \ --service-objective GP_Gen5_4 # 4 vCores # Scale to DTU-based Standard tier az sql db update \ --server mysqlserver -g myRG --name mydb \ --edition Standard --service-objective S3 # Show current service objective az sql db show --server mysqlserver -g myRG --name mydb \ --query currentServiceObjectiveName -o tsv
Backup & Restore
# List restore points az sql db restore-point list \ --server mysqlserver -g myRG --database-name mydb -o table # Restore to point in time (creates a new DB) az sql db restore \ --server mysqlserver -g myRG \ --name mydb-restored \ --source-database mydb \ --time "2024-06-01T12:00:00Z" # Create a long-term backup (manual) az sql db ltr-backup list \ --server mysqlserver -g myRG \ --database mydb -o table # Export to BACPAC (Storage Account) az sql db export \ --server mysqlserver -g myRG --name mydb \ --storage-key-type StorageAccessKey \ --storage-key <key> \ --storage-uri "https://mystorageacct.blob.core.windows.net/backups/mydb.bacpac" \ --admin-user sqladmin --admin-password "P@ssw0rd1234!" # Import from BACPAC az sql db import \ --server mysqlserver -g myRG --name mydb-import \ --storage-key-type StorageAccessKey \ --storage-key <key> \ --storage-uri "https://mystorageacct.blob.core.windows.net/backups/mydb.bacpac" \ --admin-user sqladmin --admin-password "P@ssw0rd1234!" \ --service-objective GP_Gen5_2 --max-size-bytes 34359738368
Geo-Replication & Failover Groups
# Create a geo-replica in another region az sql db replica create \ --server mysqlserver -g myRG \ --name mydb \ --partner-server mysqlserver-dr \ --partner-resource-group myRG-DR # Create a failover group az sql failover-group create \ --server mysqlserver -g myRG \ --name myfailovergroup \ --partner-server mysqlserver-dr \ --failover-policy Automatic \ --grace-period 1 # Manual failover (promote secondary) az sql failover-group set-primary \ --server mysqlserver-dr -g myRG-DR \ --name myfailovergroup
Security
# Enable Microsoft Defender (Advanced Threat Protection) az sql db threat-policy update \ --server mysqlserver -g myRG --db-name mydb \ --state Enabled \ --storage-account mystorageacct # Enable auditing to a storage account az sql server audit-policy update \ --server mysqlserver -g myRG \ --state Enabled \ --storage-account mystorageacct # Enable Transparent Data Encryption (TDE — on by default) az sql db tde set \ --server mysqlserver -g myRG --database mydb \ --status Enabled # Enable Microsoft Entra (AAD) authentication az sql server ad-admin create \ --server mysqlserver -g myRG \ --display-name myAADAdmin \ --object-id <aad-object-id>
Elastic Pools
# Create elastic pool az sql elastic-pool create \ --server mysqlserver -g myRG \ --name myPool \ --edition GeneralPurpose \ --capacity 4 --max-size 50GB # Move a database into the pool az sql db update \ --server mysqlserver -g myRG --name mydb \ --elastic-pool myPool