Azure SQL Database Is Powerful. Most Australian Businesses Are Leaving Money on the Table With It.
Migrating to Azure SQL Database can cut infrastructure overhead significantly and give your team access to enterprise-grade resilience without managing physical hardware. But "managed" doesn't mean "set and forget." In practice, the majority of Azure SQL environments we review at DBA Services have at least one serious performance or cost misconfiguration that's quietly draining budget or degrading application response times.
This article cuts through the marketing noise and gives you practical, actionable guidance on getting the most from Azure SQL, whether you're already running workloads in the cloud or planning your migration.
What Is Azure SQL Database, and How Does It Differ from SQL Server?
Azure SQL Database is Microsoft's fully managed, cloud-native relational database service built on the SQL Server engine. Microsoft handles patching, backups, high availability, and infrastructure. You manage your databases, queries, and application tier.
The key differences from on-premises SQL Server worth understanding:
- Engine compatibility: Azure SQL Database runs on the latest SQL Server engine but doesn't support every feature. SQL Server Agent, linked servers, and cross-database queries within the same instance aren't available in the single-database model.
- Deployment models: You can choose a single database, an elastic pool, or Azure SQL Managed Instance. Managed Instance closes most of the compatibility gap with on-premises SQL Server.
- Scaling model: Instead of buying hardware, you select a service tier and compute size. You can scale up or down in minutes.
- Licensing: Azure SQL Database uses a vCore or DTU-based pricing model. It's not a flat licence fee like on-premises SQL Server.
Azure SQL is not MySQL. It's a Microsoft product using T-SQL, not the open-source MySQL engine. The two are fundamentally different platforms with different syntax, tooling, and operational characteristics.
Is Azure SQL Database Free?
There is a free tier. Microsoft offers a free Azure SQL Database with 32 GB of storage, available to Azure subscribers. It's suitable for development, testing, and learning. It is not suitable for production workloads.
For production, pricing depends on your chosen service tier:
- DTU model: Bundles compute, memory, and I/O into a single unit. Simpler to understand, harder to optimise precisely.
- vCore model: Separates compute from storage. Gives you more control and lets you apply Azure Hybrid Benefit if you have existing SQL Server licences.
For most Australian businesses with existing SQL Server Software Assurance, the vCore model with Azure Hybrid Benefit delivers 20-40% cost savings compared to the DTU model at equivalent performance. That's a straightforward win that many organisations miss simply because they accepted the default tier during setup.
Why Is Your Azure SQL Database Underperforming?
This is the question we get asked most often. An application that ran fine on-premises starts exhibiting timeouts, slow queries, or inconsistent response times after migration. Here are the most common culprits we find.
Tier selection mismatch. Moving a workload to General Purpose when it needs Business Critical (for low-latency I/O), or over-provisioning compute when the real bottleneck is an unindexed query.
Missing or outdated statistics. Azure SQL Database does run automatic statistics updates, but high-velocity tables can outpace the auto-update threshold. Stale statistics lead to poor query plans.
Inappropriate connection pooling. Azure SQL has connection limits per service tier. Applications that open connections aggressively without pooling hit these limits under load.
Blocking and lock contention. This one carries over from on-premises environments. If your application wasn't designed with row versioning in mind, enabling Read Committed Snapshot Isolation (RCSI) on Azure SQL can resolve a significant proportion of blocking issues with minimal application changes.
-- Check if RCSI is enabled on your Azure SQL database
SELECT name, is_read_committed_snapshot_on
FROM sys.databases
WHERE name = DB_NAME();
-- Enable RCSI (run this from master or with appropriate permissions)
ALTER DATABASE [YourDatabaseName]
SET READ_COMMITTED_SNAPSHOT ON;
Chatty application patterns. Network latency between your application tier and Azure SQL matters. An application that makes hundreds of small round-trips per page load will feel this more than one running on-premises with sub-millisecond local network latency. Batching queries and using stored procedures reduces round-trips meaningfully.
How to Identify and Fix the Top Cost Inefficiencies in Azure SQL
Cost overruns in Azure SQL environments almost always come from the same handful of issues. Here's a structured diagnostic process you can run yourself.
Step 1: Review your DTU or vCore utilisation over the past 30 days. In the Azure portal, navigate to your database, select Metrics, and chart DTU percentage (or CPU percentage for vCore). If you're consistently sitting below 40% peak utilisation, you're likely over-provisioned.
Step 2: Audit your elastic pool configuration. Elastic pools let multiple databases share a resource pool. If you're running several low-utilisation databases at individual service tiers, consolidating into an elastic pool typically reduces cost by 30-50% for that group.
Step 3: Identify your top resource-consuming queries. Query Store is enabled by default in Azure SQL Database. Use it.
-- Top 10 queries by total CPU time in the last 24 hours
SELECT TOP 10
qt.query_sql_text,
rs.avg_cpu_time,
rs.avg_duration,
rs.count_executions,
rs.avg_logical_io_reads
FROM sys.query_store_query_text qt
JOIN sys.query_store_query q ON qt.query_text_id = q.query_text_id
JOIN sys.query_store_plan p ON q.query_id = p.query_id
JOIN sys.query_store_runtime_stats rs ON p.plan_id = rs.plan_id
JOIN sys.query_store_runtime_stats_interval rsi
ON rs.runtime_stats_interval_id = rsi.runtime_stats_interval_id
WHERE rsi.start_time >= DATEADD(HOUR, -24, GETUTCDATE())
ORDER BY rs.avg_cpu_time DESC;
Step 4: Review and act on Index Advisor recommendations. Azure SQL's built-in advisor surfaces missing index recommendations. Don't apply them blindly. Validate each one against your actual workload patterns and check for index overlap before creating anything.
Step 5: Evaluate your backup storage costs. Azure SQL Database includes backup storage equal to your database size. If you're retaining long-term backups (LTR policies), those costs accumulate. Review your retention requirements against your actual recovery objectives.
Step 6: Consider reserved capacity. If your workload is predictable and you're committed to Azure for 1-3 years, reserved capacity pricing for Azure SQL can reduce compute costs by up to 33% compared to pay-as-you-go. This is a procurement decision, but it's worth modelling.
What Should Australian Businesses Know About Azure SQL Compliance and Data Residency?
Data sovereignty is a real concern for Australian organisations operating under the Privacy Act and the Australian Privacy Principles. Azure SQL Database addresses this through region selection. Deploying to Australia East (Sydney) or Australia Southeast (Melbourne) keeps your data within Australian borders.
However, a few things to verify:
- Geo-redundant backup storage, if enabled, may replicate data to a paired region outside your primary choice. For strict data residency requirements, configure locally redundant storage for backups.
- Azure SQL threat detection and auditing logs can be directed to a Log Analytics workspace or storage account. Ensure that destination is also in-region.
- If you're using Azure SQL Managed Instance, check that your virtual network and subnet configuration aligns with your organisation's network security policies.
An experienced azure sql consultant will map these requirements before deployment, not after. Retrofitting compliance controls is significantly more expensive than building them in from the start.
When Does Azure SQL Managed Instance Make More Sense Than Azure SQL Database?
This is one of the most common questions we field from organisations planning migrations. The answer depends on your compatibility requirements.
Choose Azure SQL Managed Instance if you need:
- SQL Server Agent jobs
- Cross-database queries within the same instance
- Linked servers (with limitations)
- CLR assemblies
- Database Mail
- Near-complete compatibility with an existing on-premises SQL Server instance
Choose Azure SQL Database (single database or elastic pool) if:
- Your application was built for the cloud or has minimal on-premises SQL Server dependencies
- You want the simplest management model
- You need granular per-database scaling
Managed Instance costs more than a comparable Azure SQL Database deployment. But if you're forcing a legacy application to work around missing features, the engineering cost of those workarounds will exceed the price difference quickly.
Key Takeaways
- Azure SQL Database is a fully managed cloud relational database built on the SQL Server engine. It handles patching, backups, and high availability, but performance tuning and cost optimisation remain your responsibility.
- Most Azure SQL environments have at least one significant misconfiguration. Common issues include wrong service tier selection, missing RCSI configuration, stale statistics, and over-provisioned compute.
- The vCore pricing model combined with Azure Hybrid Benefit typically saves 20-40% over DTU pricing for organisations with existing SQL Server licences.
- Query Store is enabled by default in Azure SQL Database and should be your first diagnostic tool for performance issues.
- Data residency for Australian businesses requires deliberate configuration. Geo-redundant backup storage can replicate data outside Australia if not explicitly managed.
- Azure SQL Managed Instance closes the compatibility gap with on-premises SQL Server but costs more. The right choice depends on your application's dependency profile.
What to Do Next
If you're running workloads on azure cloud sql database and aren't certain your configuration is optimised, the fastest way to find out is a structured assessment. DBA Services provides SQL Server and Azure SQL health checks that systematically review your service tier selection, query performance, index configuration, security posture, and cost efficiency. Our health checks consistently surface actionable findings that translate directly into lower costs or better performance.
We work with Australian businesses across finance, healthcare, government, and professional services. Our team of sql server consultant australia specialists understands both the technical depth and the compliance context that local organisations require.
Contact DBA Services to arrange an Azure SQL health check. We'll tell you exactly what's working, what isn't, and what to fix first.
Get a SQL Server Health Check for $999
Find out what's really going on inside your SQL Server environment. We find critical misconfigurations in 97% of reviews, with a full 48-hour performance baseline and a prioritised action plan.
$999 ex-GST
normally $2,499
For your first SQL Server instance; additional instances are 2 hours each.