In the “old days” (e.g. pre-cloud), the minimum high availability SQL cluster in “Active-Passive” mode. The minimum license for SQL you need is for the active node and is typically charged per processor (unless you have a specific number of users and you buy per CAL). If you need SQL Enterprise, the only available option is by processor.
SQL Standard is $1,793 per Core and SQL Enterprise is $6,874 per core, using American list prices. Organizations can negotiate for cheaper prices in some cases (for example, if they are in government or education) but let’s use list prices for our comparison.
At a minimum, you must license 4 cores for each physical processor in the server. For virtual machines, you need the same minimum 4 core licenses per VM. However, if you license the physical server, you can then deploy multiple VMs on top of the fully licensed physical server.
In addition, if I want to keep getting access to upgrades, I need SQL Software Assurance which is 25% of the original cost annually.
For a basic SQL cluster, I need a minimum of 4 cores but probably typically 8-12 cores. If I want to run in Active/Active mode, the number of cores doubles with two servers running concurrently.
A basic SQL cluster running 8 cores is $14,344 + $3,586 in Software Assurance annually, assuming SQL Standard. For the same cluster, SQL Enterprise is $54,992 + $13,748 in Software Assurance annually.
The key idea here is this is the minimum configuration – whether I have 1 gigabyte of data or multiple terabytes, I’m still required to have this basic configuration just to run a SQL Cluster. This is the minimum cost of entry for a high availability SQL cluster.
This also doesn’t include the hosting costs, backup/restore costs, hardware costs, etc. which of course you need to account for in a traditional hosting model.
Comparing with Traditional SQL Running in IAAS
Running a SQL Cluster in Azure as Infrastructure as a Service is possible, but the license model is essentially the same. The only real difference is the hosting model – the license model remains the same other than its now calculated as a operational monthly cost instead of requiring an up front capital spend on licenses.
The cost for a Large VM with 4 cores running SQL Standard is $714 / month and running SQL Enterprise is $1,930 per month. In addition, you need to pay for storage costs depending on how much storage your VM requires.
In terms of high availability, it is still up to you to manage your cluster and to configure it properly for high availability:
When running SQL Server in Windows Azure VMs, it is up to you as the database administrator to ensure that your database system possesses the HADR capabilities that the service-level agreement requires. The fact that Windows Azure provides high availability mechanisms, such as service healing for cloud services and failure recovery detection for the Virtual Machines, does not itself guarantee the desired HADR capabilities of SQL Server. These mechanisms protect the high availability of the VMs and not SQL Server, which runs on the VMs. It is possible for the SQL Server instance to fail while the VM is online and healthy. Moreover, even the high availability mechanisms provided by Windows Azure allow for occasional and possibly lengthy downtime of the VMs due to events such as recovery from software or hardware failures or operating system upgrades.
In most scenarios, you would need to replicate data from one primary SQL server to a secondary mirror, so this could imply a secondary VM running SQL Server based on the same pricing above.
If we compare the virtual machine price with the on premise price, assuming a 3 year cycle for the SQL licenses, there is still a significant advantage running in Azure compared to buying traditional licenses:
|Edition||On Premise Pricing (per year)||Azure Pricing (per Year) – 2 VMs for High Availability|
|Standard||$8367||$8568 x 2 = $17,136|
|nterprise||$32079||$23160 x 2 = $46,320|
Again, keep in mind that we’re comparing apples to oranges here – the Azure pricing includes hardware, monitoring, VM failover, VM backup-recovery, etc. where the On Premise pricing only includes the basic SQL license. At a minimum, you would also need to add Windows licenses to your on premise servers as well which are included in the Azure pricing.
Comparing with Azure SQL
Let’s imagine that I have a 10 gigabyte database which requires high availability. I write my application to use Azure SQL instead of traditional SQL. What is the cost?
If I was designing a new application which needed a SQL backend, why would I choose the traditional SQL running in a virtual machine method? There are a few good reasons such as Azure SQL doesn’t currently support Analysis Services, but if I just need a core transactional DB, it’s clearly a cheaper model.