Toen Azure vorig jaar op de PDC geïntroduceerd werd, was iedereen uiterst geïnteresseerd in de mogelijkheden. De component voor dataopslag en dan met name databases was voor iedereen dan ook een teleurstelling. In de eerste dagen waren de mogelijkheden beperkt tot blobs, hiërarchische data en files, terwijl vele van onze huidige systemen juist gebaseerd zijn op relationele databases. Deze kritiek heeft het Azure-team zich dan ook aangetrokken en al gauw werd SQL Azure aangekondigd (het had eerst nog enkele andere namen). Lang was onzeker wat er werkelijk mogelijk zou zijn, maar recentelijk kwam er een eind aan deze onzekerheid en zag SQL Azure het levenslicht. In dit artikel een kleine impressie van de mogelijkheden en onmogelijkheden.
Wat is SQL Azure?
Microsoft SQL Azure Database is het cloud-based relationale database-platform, gebouwd op SQL Server technologieën. Met SQL Azure Database kun je eenvoudig relationale database-oplossingen in de cloud realiseren. Hierdoor maak je gebruik van de voordelen van de wereldwijde gedistribueerde datacenters, die hoge beschikbaarheid, schaalbaarheid en beveiliging bieden, met daarnaast ook de voordelen van de ingebouwde databeveiliging, zelf herstellende mogelijkheden en disaster recovery (MM: vrij vertaald van de website).
Rondleiding
Op de Azure Services site krijg je er een SQL Azure tabje bij. Deze tab is eigenlijk schrikbarend leeg, want er staan niet veel zaken op: enkel de database-servernaam en de username plus twee opties, nl. om een nieuwe database te maken en de bijbehorende connection-strings op te vragen. Dat is het dan.

Fig. 1: Het SQL Azure tabje

Fig. 2: Het maken van een nieuwe database

Fig. 3: Het bekijken van de connection-strings
En daarmee is het eigenlijk wel gedaan op de site. Tot zover dus de rijke user interface ;-) Toegegeven moet worden, dat de mogelijkheid tot het bekijken van de connection-strings wel handig is; dat bespaart je een zoekactie op http://www.connectionstrings.com.
Zoals je ziet heeft de server wel een hele rare naam. Dit zal wel komen omdat het gaat om een CTP en in de toekomst zullen hier wel min of meer normale namen voor in de plaats komen. De hudiige naam lijkt in ieder geval gegenereerd te zijn.
Op de Azure services pagina’s zijn dus geen mogelijkheden om Tabellen, Stored Procedures, indexen, etc. aan te maken. Daarvoor moet je teruggrijpen op de bekende SQL Server Client tools, zoals Visual Studio (via de Server Explorer) of Microsoft SQL Server Management Studio. Bij deze laatste zit wel een addertje onder het gras. Je kunt niet zomaar de New Connection Wizard gebruiken. Je moet een New Query maken en dan een verbinding gaan opzetten. Wat je dan zeker niet moet vergeten, is het invullen van de default database. Anders wijs je naar de Master database en tja … daar kun je niet veel mee.

Fig. 4: Verbinden vanuit SQL Server Management Studio

Fig. 5: Niet vergeten default database in te vullen!
Het is wel grappig om te zien dat in de dropdown met “Available Databases” dan “CloudeNode” staat. Dat is dan nog de enige verwijzing dat het gaat om een database in de cloud.

Fig. 6: Database is een CloudeNode
Als je boven het tabje met de query hangt, dan krijg je natuurlijk de volledige tekst te zien. Deze is beduidend langer dan bij een normale lokale of remote database.
PS: Als je op Connect drukt, krijg je onderstaande fout. Niets ernstigs, maar wel vreemd…

Fig. 7: Foutmelding
Ik heb de volgende standaard SQL-dingetjes uitgeprobeerd:
- een tabel gemaakt;
- een primary key op de tabel;
- een insert op de tabel;
- een select (uiteraard);
- een stored procedure (een simpele versie om een select van de tabel te retourneren);
- en een view op de tabel.
Bij het aanmaken van tabellen kun je uiteraard niet geen FileGroup en Partitioning Scheme aangeven. Deze zullen door de cloud geregeld gaan worden.
Bij het maken van een index lijk je geen ROW_LOCKS of PAGE_LOCKS te kunnen opgeven. Dit is natuurlijk ook min of meer gekoppeld aan de fysieke storage.
ALTER TABLE dbo.MyDemoTable ADD CONSTRAINT
PK_MyDemoTable PRIMARY KEY CLUSTERED
(
ID
) WITH(
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF )
/*, ALLOW_ROW_LOCKS = ON
, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]*/
GO
Bij de overige kleine testjes kwam ik geen gekke dingen tegen.
Wat je wel mist, zijn alle bekende system stored procedures, zoals SP_WHO, SP_HELP en SP_LOCK. Er is wel een aantal SYS-tabellen beschikbaar, waaronder sys.databases, en daarmee kom je natuurlijk ook een heel eind.
Doordat de tools nog een beetje Spartaans zijn, mis je een aantal handigheden uit de bekende gereedschappen zoals auto-complete en intellisense. Dat gaat vast in de toekomst opgelost worden. Dit blijkt al wel uit het feit, dat er al verschillende tools voor SQL Azure beschikbaar zijn. Zo kun je database, entiteiten en artifacts gewoon maken in een lokale database. Op deze manier heb je alle mogelijke hulp en hulpmiddelen tot je beschikking. Als je dan klaar bent, dan gebruik je de SQL Azure Migration Wizard tool (http://sqlazuremw.codeplex.com) om een SQL Azure script te maken. Deze tool filtert dan alles wat (nog) niet mogelijk is, uit het script.
Ook het gebrek aan een Object Explorer is min of meer opgelost met de SQL Azure Explorer (http://sqlazureexplorer.codeplex.com). Deze plugin voor Visual Studio 2010 komt een beetje aan dit gemis tegemoet.

Fig. 8: SQL Azure Explorer object browser

Fig. 9: SQL Azure Explorer SQL window
Tot slot
Het ziet er allemaal erg aardig uit. Het is zeker een verbetering aan mogelijkheden ten aanzien van de Databases in de Cloud de eerste dagen van Azure.
Maar ik moet je eerlijk bekennen, dat dit alles mij redelijk bekend voorkomt. Bij de website hoster waar ik mijn blog host, heb ik ook een SQL Server tot mijn beschikking. Ook deze kan ik via verschillende gereedschappen benaderen en voor mijn gevoel is dat dus niet heel veel anders. Ook daar heb ik niet de vrijheid van filegroups, etc. Oké, daar kan ik niet ongestraft een database aanmaken, maar in hoeverre is dit anders dan b.v. databases in een managed netwerk?
Toch voegt SQL Azure wel een extra dimensie toe aan het Azure Services platform, waarmee het platform toch weer een stukje volwassener en completer wordt. Ik denk dat we in de toekomst nog wel het een en ander aan nieuws over deze Azure-telg zullen horen.
Voor meer informatie: kijk op http://www.microsoft.com/azure.