Till försvar av SQL Server Express!

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

Vi på SQL Service brukar gärna skriva och prata om fördelarna med Enterprise Edition av Microsoft SQL Server, bland annat när det gäller prestanda och tillgänglighet. Men idag tänkte jag göra tvärt om, genom att slå ett slag för SQL Server Express Edition. Varför? Av den enkla anledning att den har en stor fördel som inte de andra editions av SQL Server har: den är gratis. (Ladda ned Microsoft SQL Server 2012 Express Edition här http://www.microsoft.com/en-us/download/details.aspx?id=29062)

Så, varför använder vi inte SQL Server Express i alla lägen? Eller i alla fall oftare än vad som verkar vara fallet idag? Dels beror det givetvis på att viss funktionalitet är begränsad, men även till stor del kanske på vår egen okunnighet och brist på fantasi? De begränsningar Microsoft valt att sätta på Express Edition kan vi givetvis inte ändra på, men om vi känner till vilka de är kan vi hitta på andra lösningar, och i alla fall ha en möjlighet att utvärdera om Express Edition kan vara lösningen på några, eller kanske många, av de SQL Server plattformsval som vi gör.

Så, vad är då de viktigaste begränsningarna?

SQL Server Agent saknas

SQL Profiler saknas

CPU: Max 1 CPU socket, eller 4 core

Minne: Max 1 GB för Database Engine och 4 GB för Reporting Services

Databasstorlek: Max 10 GB

 

Men, det finns även en hel del som faktisk ÄR inkluderat i Express Edition, som du kanske inte kände till:

Full Text Search inklusive Semantic Search

Windows Server Core support

Du kan köra upp till 50 instanser av Express Edition på en server

Stöd för Contained Databases

Change Tracking

Dedicated Admin Connection

SysPrep Support

Powershell Support

CLR Integration

Filetable

Reporting Services

Management Studio

Stöd för Spatiala (Geografiska) data och Index

Extended Events

 

Workarounds för begränsningar

Problemet med den saknade SQL Server Agenten

Om man vill köra produktionsdatabaser i SQL Server Express Edition, vill man ju givetvis ta backuper, underhålla index och statistik samt köra DBCC checkdb. Alt detta kan man göra (Till exempel med Ola Hallengrens script Http://ola.hallengren.com ) men problemet är att avsaknad av SQL Server Agent gör det lite knepigare att schemalägga underhållet. Det finns flera olika lösningar på det, varav den enklaste är att schemalägga MCD script i Windows via Scheduled Tasks. Dessa script ropar då lämpligen på stored procedures via SQLCMD.exe. Ett elegantare sätt beskrivs här http://www.sqlteam.com/article/scheduling-jobs-in-sql-server-express och består i att schemalägga med hjälp av SQL Server Service Broker och Conversion Timers Det finns även en gratis utility på CodePlex, som shcemalägger backup och underhåll vid hjälp av sqlmaint.exe här: http://expressmaint.codeplex.com/

SQL Profiler då?

Givetvis vill man ibland titta in under huven även på SQL Server Express, men ingen SQL Profiler följer med. Det bästa är då om man faktiskt vill anända Profiler, är att helt enkelt använda Profiler från en annan installation av SQL Server Standard eller Enterprise till exempel. Men man kan faktiskt använda Extended Events, även om det kan vara lite klurigt att komma igång med. Och även DBCC INPUTBUFFER kan ju lösa vissa enkla uppgifter.

 

Jag hoppas att detta kan ge inspiration till att använda SQL Server för typer av uppgifter där du idag kanske använder MySQl, Access eller liknande produkter, till exempel på grund av priset. Vi på SQL Service hjälper dig givetvis gärna!

Mer information om SQL Server Express Edition (Och även de andra Editions):

Books Online for SQL Server 2012 http://msdn.microsoft.com/en-us/library/ms130214.aspx

Compute Capacity Limits by Edition of SQL Server http://msdn.microsoft.com/en-us/library/ms143760.aspx

Editions and Components of SQL Server 2012 http://msdn.microsoft.com/en-us/library/ms144275.aspx

Features Supported by the Editions of SQL Server 2012 http://msdn.microsoft.com/en-us/library/cc645993.aspx

Maximum Capacity Specifications for SQL Server http://msdn.microsoft.com/en-us/library/ms143432.aspx