How large can a log file be in a SQL Server Express database?It is said…
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