Background
Sections
IntroductionFoundations1. Resource Hierarchy2. Resource Manager3. Identity and RBAC4. Regions and Availability5. Naming and TaggingVirtual Machines1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetVirtual Network1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetBlob Storage1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetAzure SQL Database1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetAzure Kubernetes Service1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetAzure Container Registry1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetMicrosoft Entra ID1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetAzure RBAC1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetAzure Functions1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetAPI Management1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetAzure App Configuration1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetAzure Machine Learning1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetAzure Monitor1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and CheatsheetAzure AI Foundry1. What and Why2. Core Concepts3. Architecture4. Getting Started5. Deployment6. Integrations7. Production8. Interview Questions9. Glossary and Cheatsheet

9. Glossary and Cheatsheet

9 min read

The ten-second lookup.

Glossary

Active geo-replication — Asynchronous readable secondary databases in other regions, failed over manually, per database.

Always Encrypted — Client-side column encryption where keys never reach the service; protects against a privileged DBA, at the cost of severe query restrictions on encrypted columns.

Auto-pause delay — Minutes of inactivity after which a serverless database deallocates compute. Set to -1 to disable pausing entirely.

Azure Hybrid Benefit — Discount for bringing SQL Server licences with Software Assurance. vCore model only.

Azure SQL Managed Instance — Sibling product giving near-full SQL Server instance compatibility inside your VNet. The answer when instance-scope features block you.

Business Critical — vCore service tier with four replicas on local NVMe SSD in an Always On availability group, plus a free readable secondary. DTU-model equivalent: Premium.

Change Data Capture (CDC) — Before/after row change records in change tables. ⚠️ verify current tier support.

Change Tracking — Lightweight record of which rows changed since a version; enough for a sync job.

Collation — Character set and sort/comparison rules. Set at creation; changing it forces replacement of the database.

Connection policyRedirect (client connects straight to the node on ports 11000–11999, lower latency), Proxy (all traffic through the gateway on 1433), or Default.

Contained database user — A user created inside the database with no server login; required for managed-identity access and portable across failover.

DTU (Database Transaction Unit) — Opaque blended unit of CPU, memory and I/O in the older purchasing model (Basic / Standard / Premium). eDTU is the elastic-pool equivalent.

Dynamic data masking — Presentation-layer masking of results for unprivileged users. Not a security boundary — values are inferable.

Elastic Jobs — Scheduled T-SQL execution across one or many databases; the replacement for SQL Agent, which does not exist here.

Elastic pool — Shared compute allocation for a set of databases on one logical server, with per-database min/max caps.

Failover group — Grouping over databases providing a listener endpoint that follows the primary, plus optional automatic failover. Applications should connect to the listener, not the server name.

General Purpose — Default vCore service tier: one compute replica, data files on remote Azure Premium Storage. DTU-model equivalent: Standard.

Geo-restore — Restore from geo-redundant backups into another region; slower than a failover group, and the fallback when you don't have one.

Hyperscale — vCore service tier with the engine decomposed into compute nodes, a log service, and page servers. Multi-TB sizes and near-constant-time backup/restore. Historically hard to leave.

Logical server (Microsoft.Sql/servers) — A DNS name, an administrator identity, firewall rules, auditing configuration and a private endpoint attachment. No compute, no cost.

Long-term retention (LTR) — Weekly/monthly/yearly backup copies kept for years, billed separately, and not deleted when the database is deleted.

master — System database exposing logins, firewall rules and sys.databases. Not usable for your own objects.

Point-in-time restore (PITR) — Restore to any second within the retention window. Always creates a new database.

Private endpoint — A NIC in your subnet with a private IP mapped to the sqlServer sub-resource, paired with the privatelink.database.windows.net DNS zone.

Provisioned compute — Fixed vCore allocation billed per hour regardless of use. The alternative to serverless.

Query Store — On by default; retains query plans and their runtime statistics. The single most useful diagnostic surface this service has.

RBPEX — Resilient Buffer Pool Extension; the local SSD cache in front of page servers in Hyperscale.

RCSI (Read Committed Snapshot Isolation) — On by default here, unlike a default on-premises SQL Server install. Changes blocking behaviour for migrating workloads.

Serverless compute — Autoscaling vCore range billed per vCore-second, with auto-pause to zero compute. Costs more per vCore-second than provisioned, so it only saves money if it actually pauses.

Service tier — General Purpose / Business Critical / Hyperscale (vCore), or Basic / Standard / Premium (DTU). Selects a storage architecture, not just a speed.

sku_name — The Terraform/ARM string encoding tier, compute model, hardware family and size: GP_S_Gen5_2 = General Purpose, Serverless, Gen5, 2 vCores.

SQL Data Warehouse / Synapse dedicated SQL pool — A different service. Shares T-SQL, shares no architecture. Not this.

TDE (Transparent Data Encryption) — Encryption at rest, on by default, platform-managed key unless you configure a customer-managed key in Key Vault.

vCore — Virtual core on a named hardware family; the modern purchasing model, and the only one supporting Hyperscale, Serverless, and Azure Hybrid Benefit.

Virtual network rule — Allows a subnet via a service endpoint; traffic still uses the public endpoint address. Weaker than a private endpoint.

Zone redundancy — Spreads replicas across availability zones in a region. Synchronous, zero data loss, and the best resilience value on the price list.

Cheatsheet — the commands you'll actually type

# --- provision ------------------------------------------------------------
az sql server create -g $RG -n $SRV -l $LOC --enable-ad-only-auth \
  --external-admin-principal-type Group --external-admin-name "sql-admins" --external-admin-sid $GID
az sql db create -g $RG -s $SRV -n $DB --edition GeneralPurpose \
  --compute-model Serverless --family Gen5 --capacity 2 --min-capacity 0.5 --auto-pause-delay 60

# --- inspect --------------------------------------------------------------
az sql db list -g $RG -s $SRV -o table
az sql db show -g $RG -s $SRV -n $DB --query "{sku:currentSku.name, size:maxSizeBytes, zone:zoneRedundant}"
az sql db list-editions -l $LOC --edition GeneralPurpose --query "[].supportedServiceLevelObjectives[].name" -o tsv

# --- scale (online; brief connection drop at the end) ---------------------
az sql db update -g $RG -s $SRV -n $DB --service-objective GP_Gen5_4
az sql db update -g $RG -s $SRV -n $DB --zone-redundant true

# --- lock it down ---------------------------------------------------------
az sql server update -g $RG -n $SRV --enable-public-network false
az sql server ad-only-auth enable -g $RG -n $SRV
az sql server firewall-rule list -g $RG -s $SRV -o table   # audit what's open

# --- restore (always lands as a NEW database) -----------------------------
az sql db restore -g $RG -s $SRV -n $DB --dest-name ${DB}-restored --time "2026-07-28T14:30:00Z"
az sql db rename -g $RG -s $SRV -n $DB --new-name ${DB}-damaged
az sql db rename -g $RG -s $SRV -n ${DB}-restored --new-name $DB

# --- geo / failover -------------------------------------------------------
az sql failover-group create -g $RG -s $SRV -n $FOG --partner-server $SRV_DR --add-db $DB
az sql failover-group set-primary -g $RG -s $SRV_DR -n $FOG          # planned failover, no data loss

# --- long-term retention (survives database deletion — check this) --------
az sql db ltr-policy set -g $RG -s $SRV -n $DB --weekly-retention P4W --yearly-retention P7Y --week-of-year 1
az sql db ltr-backup list -l $LOC --server $SRV --database $DB -o table

# --- connect (Entra auth, no password) ------------------------------------
sqlcmd -S ${SRV}.database.windows.net -d $DB -G -Q "SELECT @@VERSION;"

# --- teardown -------------------------------------------------------------
az group delete -n $RG --yes --no-wait

The T-SQL worth memorising

-- What is this database using, right now? (20s granularity, ~1h history)
SELECT TOP 60 end_time, avg_cpu_percent, avg_data_io_percent,
       avg_log_write_percent, max_worker_percent, max_session_percent
FROM sys.dm_db_resource_stats ORDER BY end_time DESC;

-- What's running, and what's blocking what?
SELECT r.session_id, r.status, r.wait_type, r.wait_time, r.blocking_session_id, t.text
FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.session_id <> @@SPID;

-- Grant an app's managed identity the least it needs
CREATE USER [id-orders-api-prod] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [id-orders-api-prod];
ALTER ROLE db_datawriter ADD MEMBER [id-orders-api-prod];

-- Who has access to this database?
SELECT p.name, p.type_desc, r.name AS role_name
FROM sys.database_principals p
LEFT JOIN sys.database_role_members m ON m.member_principal_id = p.principal_id
LEFT JOIN sys.database_principals r ON r.principal_id = m.role_principal_id
WHERE p.type NOT IN ('R') AND p.name NOT LIKE '##%';

-- Current service tier, from inside the database
SELECT DATABASEPROPERTYEX(DB_NAME(), 'ServiceObjective') AS slo,
       DATABASEPROPERTYEX(DB_NAME(), 'Edition') AS edition;

Connection strings

# Managed identity — the target state, no secret anywhere
Server=tcp:sql-orders-prod.database.windows.net,1433;Database=sqldb-orders-prod;
Authentication=Active Directory Managed Identity;User Id=<client-id>;
Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=3;ConnectRetryInterval=10;

# Read replica (free on Business Critical, named replicas on Hyperscale)
...;ApplicationIntent=ReadOnly;

# Failover group listener — survives a regional failover with no config change
Server=tcp:fog-orders.database.windows.net,1433;...

Resource ID shape

/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Sql/servers/{server}
/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Sql/servers/{server}/databases/{db}
/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Sql/servers/{server}/elasticPools/{pool}

This is the string every role assignment scope, policy assignment, diagnostic setting target, and error message is written against.

Limits worth knowing — and the scope each is counted at

Limit Scope Hard/soft
Max vCores / DTUs Per database or elastic pool Hard — set by tier and hardware family
Max database size Per database Hard — very different for Hyperscale
Max concurrent workers Per database or elastic pool Hard — proportional to compute; the most common invisible ceiling
Max concurrent sessions Per database or elastic pool Hard
tempdb size Per database, derived from compute Hard — not separately configurable
Databases per logical server Per logical server Hard
Logical servers Per subscription, per region Soft — raise by request
Total vCore quota Per subscription, per region, per tier family Soft — fails a fresh apply with a permissions-looking error

⚠️ Every number above varies by region, tier, and subscription type. Verify against current Azure docs before designing to any of them. The scopes are stable; the values are not.

Error numbers worth recognising

Error Means Do
40613 Database not currently available (failover, scaling, resume) Retry with backoff — expected, not exceptional
40615 Client IP not allowed by the firewall Read the IP in the message before touching credentials
18456 Login failed Genuine auth problem — different from 40615
10928 / 10929 Resource ID limit reached (workers/sessions) Check the connection pool before scaling
40501 Service is busy (throttling) Retry with backoff
49918 / 49919 / 49920 Cannot process request, not enough resources Retry with backoff
4060 Cannot open database requested by the login Usually a missing contained user or wrong database name

That's the topic. Back to the Azure SQL Database overview, or on to another topic from the article's main page.

← Back to the Azure SQL Database overview · ← Previous: Interview Questions