SQL Azure is a Microsoft solution for relational database cloud computing. It comes as part of the Azure platform. As with the Azure platform in general, in order to implement such a solution, many limitations were placed on the Azure version of SQL server. The implantation as a technical solution is amazing and requires some IT background to figure the complexity of it out.
The best point to start presenting SQL Azure is with a description of the infrastructure. As a user, you are granted with a token. This token is used to create all of your databases. The first DB to be setup is the master DB, very similar the SQL Server master DB (more on the functionality of the Master DB in the next post). All traffic to the SQL Azure “Server” is routed through a firewall that allows you to limit the accesses to specific sources, using a well designed web interface. Then the connection is routed to a gate that diverts the connection to the current server hosting your database. All SQL server instances which build the SQL Azure platform are installed on cluster machines to support high availability, and data is automatically replicated across different machines. In the case of failure, the gateway will automatically point to the current online database instance.
Download SQL Azure presentation
In order to increase scalability of your application and to maintain overall balances of the SQLAzure platform server, your databases are placed across multiple servers. (i.e., Even though it looks like it, your company databases are not placed physically on one server! what actually happens is that several companies share the same hardware! So how do you reach a specific database? The trick is in the login: the connection string must include the destination database. Your connection undergoes authentication using the login setting saved in the master DB, and then diverted to the requested database that will most likely be located on a different server.
Furthermore, to allow a fair resource distribution between the different databases and SQL Azure clients, several limitations are set on the databases settings and resource utilization.
A detailed list of the limitation can be found in the following link, and I will give you the highlights:
The major change is that you can’t manipulates local resources:
There is only one file group per database.
No fill factor.
No user defined data types.
No full text indexes.
No memory settings or any other server level settings.
All tables must include a clustered index.
Each connection can only function in the boundaries of the database it is connected to.
No trace or profiler, due to the fact that when you connect to a specific DB u can interact with the master DB.
Can’t use the USE <database> command.
Can’t use distributed transactions or queries.
Can’t use global temp tables.
No service broker
All logins are SQL server logins, there is no domain support.
Maximum database size of 10G.
No SSIS or SSAS support
Connection throttling, to support fair resources distribution, is placed in the form of limitation on:
Query execution time
Maximum open connection time
Limiting long running transactions and extensive resource usage CPU and memory.
These limitations will actively disconnect the client connection and STOP QUERY PROCESSING. Selecting the 10 GB (Business Edition) version over the 1 GB (Web Edition) version will grant more resources and raise the limitation settings.
It is evident from the description above that SQL Azure is not a straight forward solution for high load OLTP databases or data warehouse implementation. Working tips, scalability, design, considerations and more- on the next blog.
The following technical resources are a good starting point to understand the SQL Azure platform: