söndag, januari 17, 2010

Azure Development Storage i SQL Server 2008 R2

Sista tiden har jag utvecklat en hel del mot Windows Azure i Visual Studio 2010 och om man som jag inte gillar SQL Express utan vill använda SQL Server 2008 R2 till Development Storage är det väldigt enkelt att fixa till det. När man startar ett Windows Azure projekt första gången skapas en lokal SQL Server Express-databas med tabeller för köer, blobbar och tabeller. För att istället skapa databasen i en icke-express-variant av SQL Server måste man först själv skapa databasen som behövs med hjälp av ett program i Windows Azure SDK.

I katalogen C:\Program Files\Windows Azure SDK\v1.0\bin\devstore finns filen dsinit.exe. Det är den som exekveras när man startat ett Azure projekt första gången och skapar upp databasen. Starta en command prompt och exekvera dsinit.exe enligt följande för att installera den på default-instasen:
dsinit.exe /sqlinstance:.

Eller om man vill installera den på en namngiven instans:
dsinit.exe /sqlinstance:myLocalInstance

Updatera sedan DSService.exe.config och lägg till attributet dbServer enligt nedan:

<service name="Blob" url="http://127.0.0.1:10000/" dbServer="ComputerName\NamedInstance"/>
<service name="Queue" url="http://127.0.0.1:10001/" dbServer=" ComputerName\NamedInstance "/>
<service name="Table" url="http://127.0.0.1:10002/" dbServer=" ComputerName\NamedInstance "/>

Man kan också använda dsinit.exe om man vill rensa allt innehåll i databasen, dvs tömma köer, blobbar och tabeller med:
dsinit.exe /sqlinstance:myLocalInstance /forceCreate

Det finns en del forum, blogger och liknande som hänvisar till att man ska göra ändringarna i DevelopmentStorage.exe.config men det var det gamla namnet och numera heter den DSService.exe.

6 kommentarer:

Magnus sa...

Tack för en bra artikel. Men hur gör jag om jag inte har en lokal SQL-server, utan vill använda en annan server?

I DSService.exe.config finns ju attributet dbServer, men inte som parameter till dsinit.exe.

Har du några idéer? (Utöver att skapa tabellerna lokalt, och sedan flytta dem...)

Björn Eriksen sa...

Hejsan Magnus!

Tyvärr finns det inte stöd för att flytta Development Storage till en extern server. Vi hade velat göra det i mitt projekt men det går inte.

DSService har bara enpoints som stödjer connections från samma dator.

Antar att det är för att man inte ska kunna sätta upp en egen Development Storage och använda i produktionssyfte.

Mvh Björn

Magnus sa...

Ja, det låter ju rimligt förstås... Innebär det att man inte heller i DSService.exe.config faktiskt kan speca en annan server, trots att den är på formen dbServer="ComputerName\NamedInstance"
? (Ang min tanke att manuellt skapa upp databasen på servern.)

/M

Björn Eriksen sa...

Vi har försökt att manuellt skapa databserna på en extern server men fick det inte att fungera. Du får gärna höra av dig om du hittar en lösninig!

Anonym sa...

mycket intiresno, tack

Anonym sa...

maste kolla:)