SQL Azure Cost

We’ve all heard the scary stories. A developer starts testing Azure and then suddenly gets a thousand dollar bill on their credit card. The whole idea behind Azure works of the premise that you are not paying for the infrastructure. Instead of buying servers and disks and racks and switches and routers, you just pay for access and storage. It’s a great model. That model is especially applicable to small businesses that just can’t afford the outlay, or to a larger company that wants to perform cheap experiments, or any number of other places where purchasing and maintaining hardware just doesn’t make sense. But what are the costs?

That’s a little tricky to answer, truth be told. SQL Azure is charged a monthly fee based on the size and number of databases, but the fee is amortized daily based on the size and number of databases you use at any point during the day. Easy, right? Yeah, me neither. Here’s the legal sheet with all the descriptions in detail. I’ve pulled out the relevant quote here:

We charge a monthly fee for each SQL Azure database, but we amortize that database fee over the month and charge for the number of databases used on a daily basis. This daily fee is dependent on which database type (e.g., 1 GB Web Edition, 10 GB Business Edition, etc.) and number of databases you use. You pay based on the total number of databases that existed at any point during a particular day. For presentation on your bill, all usage for Web Edition databases is converted into the 1 GB size and all Business Edition usage is converted into the 10 GB size. For example, if you utilized a 50 GB Business Edition database, your bill will display this as five 10 GB databases.

What are those fees? Here’s another bit from the web site. You’re measured based on the size of your database. Less than 5gb and it’s a web database. Since the rounding is up, greater than 5gb on a database and we’re talking a Business database and the rates go up:

Web Edition

$9.99 per database up to 1GB per month

$49.95 per database up to 5GB per month

Business Edition

$99.99 per database up to 10GB per month

$199.98 per database up to 20GB per month

$299.97 per database up to 30GB per month

$399.96 per database up to 40GB per month

$499.95 per database up to 50GB per month

For example, I currently have three databases I’m playing with. All are less than 5gb, so I’m getting charged $9.99 a month x 3, but that is assuming I leave all three databases there all month. If they are only there part of of a month, say 5 days, then I get charged $9.99 * (5/30) or $.333 a day for a total of $1.665 for the month. I’m not a lawyer or an accountant, so please, validate these numbers on your own, but the math works out.

That’s just SQL Azure. Now we need to talk data transfers. The pricing in this area is confusing. Windows Azure has a whole different price structure and includes data transfers. Is that applicable to SQL Azure? I’m still not sure. It’s not in the documentation as a part of paying for SQL Azure, but I’m fairly certain it is.

Let’s work off the model, for a moment, that there are no transfer costs for SQL Azure. Assuming this is correct, an interesting thing occurs. You can just use SQL Azure and connect to it from your own app servers. Or, you can start using Windows Azure and pay the data transfer costs. What’s the interesting point? If you’re just accessing SQL Azure and you write really bad TSQL code that moves way too much data or has too many really sloppy transactions or something you get away for free. But if you do the same thing from Windows Azure, you’re going to pay through the nose for your bad coding practices. However, I think there are transfer rates on Azure too, so all that poorly written code (or all that nHibernate generated code) is going to cost serious bucks.

In short, who said the job of a DBA or a database developer was dead? Not me. In fact, if you’re decent at query tuning, your star might be rising. You are going to literally save companies money.

There is a data transfer cost, the rate is dependent on where you are located:

North America and Europe regions: $0.10 per GB in / $0.15 per GB out

Asia Pacific Region: $0.10 per GB in / $0.20 per GB out

Inbound data transfers during off-peak times through June 30, 2011 are at no charge. Prices revert to our normal inbound data transfer rates after June 30, 2011.

To date, I’ve been charged $.20 (that’s twenty cents). I’m still not sure why and since it was so low, I didn’t bother fighting it. The good news. If you’re just starting out and you have an MSDN Premium subscription, there is a way for you to experiment, within a narrow range of options, for free. Otherwise, plan on paying.

As I continue working with Azure, I’ll let you know, in general numbers, what it’s costing me.