SQL Azure

Afgelopen dagen een beetje gespeeld met SQL Azure. Wat ziet dat er veel belovend uit.

Oke, de manier om er mee te werken is nog een beetje spartaans. Je kunt connecten met behulp van Microsoft SQL Server Management Studio. Maar je mist wel de handige Object explorer zoals je die gebruikt bij je normale SQL Server dingetjes. Ik denk dat dat in de toekomst nog wel zal verbeteren.

Maar goed laat ik bij het begin beginnen. Op de Azure Services site heb ik nu een SQL Azure tabje erbij. Daarop staan niet veel zaken: de database server naam, username. Je kunt er een nieuwe database maken en connectionstrings opvragen, daar blijft het dan wel verder bij.

sqlazuresite

Newdb

Het maken van een nieuwe database.

connectstrings

Het bekijken van de connectionstrings.

En daarmee is het eigenlijk wel gedaan op de site. Verder kun je er niets. Tot zover de rijke user interface 😉

Maar zoals gezegd, je kunt wel connecten met Visual Studio (Server Explorer) of Microsoft SQL Server Management Studio. Bij die laatste zit er wel een addertje onder het gras. Je kunt niet zomaar de New Connection Wizard gebruiken. Je moet een New Query maken en daar de connection gaan opzetten. Je moet dan niet vergeten om de default Database in te vullen. Anders vervalt dat naar de Master database en tja daar kan je niet veel.

connectdb1 connectdb2

Wel grappig is dan om te zien, in de drop down met Available Databases staat CloudeNode.

connectdb3

Als je over de tab met de Query hangt, dan krijg je de volledige string te zien. Die is beduidend langer dan bij een normale lokale of remote Database.

connectdb4

Als je op Connect druk overigens, krijg je altijd onderstaande fout. Niets ernstigs, maar wel vreemd.

 knownerror

Uiteraard heb ik een aantal standaard SQL dingetjes geprobeerd. Ik heb:

  • een tabel gemaakt
  • een primary key op de tabel
  • een insert op de tabel geprobeerd
  • een select uiteraard
  • een stored procedure (een simpele om een select van de tabel te retourneren)
  • en een view op de tabel

Het enige wat je vooralsnog niet kunt (en dat is natuurlijk ook niet zo gek), de FileGroup en Partioning Scheme aangeven. Deze zullen door de Cloud geregeld gaan worden.

Bij het maken van de index ontdekte ik, vooralsnog, alleen dit:

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

Het rood gemarkeerde kan (nog) niet in SQL Azure.

Wat ook nog mist, zijn alle bekende system stored procedures. Zoals SP_WHO, SP_HELP, SP_LOCK etc. Uiteraard zijn wel de sys tabellen beschikbaar, zoals sys.databases etc. Daarmee kom je natuurlijk alweer een heel eind. Wel vervelend is het, dat je geen auto complete hebt.

auto complete

Maar daar is wel al een oplossing voor. Je kunt je database, entiteiten en artifacts gewoon maken in een lokale database. Zodat je alle mogelijke hulp en hulpmiddelen tot je beschikking hebt. Daarna ga je met het SQL Azure Migration Wizard tool (van CodePlex) een SQL Azure script maken. Dit tool filtert dan alles wat (nog) niet mogelijk is, weg uit het script.

Tot slot, het ziet er allemaal wel erg aardig uit. Maar ik moet je eerlijk bekennen, dat het bekend voorkomt. Bij mijn website hoster heb ik ook een SQL server tot mijn beschikking en voor mijn gevoel is dat niet heel veel anders. Ook daar heb ik niet vrijheid van filegroups etc. Oke, daar kan ik niet ongestraft een database aanmaken geloof ik.

Komende weken maar eens verder expirementeren met SQL Azure.

This entry was posted in .NET, SDN by Marcel Meijer. Bookmark the permalink.

About Marcel Meijer

Op dit moment houdt hij zich voornamelijk bezig met Microsoft Azure, Cloud, C#, Software Ontwikkeling, Architectuur, Windows 10 en IoT. Hij werkt als Development Team Lead bij iFunds. In zijn vrije tijd is hij voorzitter, bestuurslid, eindredacteur en eventorganisator bij de SDN (Software Development Network). Sinds 1 oktober 2010 is hij MVP geworden.

Leave a Reply

Your email address will not be published. Required fields are marked *