3/31/14

Changes, moving on and a new start...

For two years ago I was thinking about starting to employ people in my Company, in the same time I got an offer from Another Company. They wanted me as a database architect, mentor and specialist. After some thoughts I decided to hook up on that offer, and I did put my own company on hold. After the summer vacatíon I started at the new Company. Close to a year later I got another offer that I decided to move over to. I started working on Claremont in the end of September last year. Now six months later I do another change, after rigorous talks with Sogeti and their office in Borlänge, 45 kilometers from my home, we found a role that would suite me and Sogeti and of April 1st 2014 I'll continue my journey. I'm really excited to work much closer to home, and to work in that team at Sogeti. I will pretty much do same stuff as before, SQL Server and Business Intelligence, as a architect, mentor, speaker and instructor. I will continue to be community oriented, the only difference compared to the last two years is 200 kilometers less travel to get to my office. For the last couple of weeks we've been discussing the closest future, and I can promise you it's looking bright. In my closest team we'll be focusing on my dearest technology and with that said please be tuned. Furthermore my travel and Conference schedule is getting filled up. * April is focused on the Clash of the Titans where I and Mikael Wedham is delivering a full day SQL Server event together with Informator. * May has TechEd, and the upcoming SQL Server Tour... * June starts in Croatia for the SQL TuneIn. * July carries the MCT Summit Europe in Romania. Until next time, have fun and tune those queries!

3/21/14

Clash of the Titans

För ett par veckor sedan började vi diskutera ett event. Vi är Mikael Wedham, Tobias Strandh och undertecknad. Det är ett endagarsevent runt Microsoft SQL Server 2014 som går av stapeln den 28 april i Stockholm, mer info finns på Informators eventsida. Då det skulle passa ihop med att SQL Server 2014 alldeles i dagarna gick till RTM, Release To Manufacture, och kommer som GA, Global Availability, den första april passar det alldeles ypperligt att stå där på frontlinjen och tala om nyheterna. Det som är lite extra kul är att göra en sån här sak tillsammans med någon, och Micke är en skön typ. Förutom att Micke blev den första, enda?, i Sverige som lyckades hela vägen med att greja Microsoft Certified Master SQL Server 2008, innan MCM/MCSM-programmet lades ner i höstas, så delar vi samma twistade humor vilket bådar gott inför eventet. Men vaddå, är inte jag MCM? Nej, jag hann tyvärr inte med hela vägen. På PASS Summit förrförra året, 2012, skrev jag Knowledge Exam och klarade det, och på TechEd förra året provade jag på Lab Exam. Tyvärr räckte det inte att spontant hoppa in och köra labben vilket var ett flertal scenarier med problemställningar där man ska lösa dem i virtuella miljöer. Skulle man göra labben borde man dels vara väl förberedd, se till att man var totalt fokuserad, och vara utvilad och på allmänt topp. Jag jobbade ihop med Microsoft Learning på dagarna, och rockade runt på eventet övrig tid, och tänkte att va sjutton, visst kan man testa att skriva den där labben. Hamnade i ett certifieringsrum med femtiotalet andra personer med allehanda certifieringsbehov, där folk sprang fram och tillbaka, och med en maskin med alldeles för liten skärm och låg upplösning. Jaja, så är det ibland. Certifiering är något jag förespråkar, och något jag tycker är riktigt bra, men det är inget som jag hänger upp mitt liv på. Är fullständigt övertygad att jag skulle klara labben på andra försöket, tyvärr infann sig aldrig chansen tidsmässigt. Eftersom jag vet att Microsoft Learning jobbar på att hitta någon form av ersättning till Master-nivån väntar jag lugnt in den och tar nia tag då. Tillbaka i ordningen, det blir alltså en heldag med mig och Micke på scenen där vi om vartannat talar om nyheter och coola funktioner i SQL Server 2014, det kommer säkert med sånt som var nyheter i 2012, 2008R2 och 2008 också, sådant som vi bägge tycker är jättebra och bra att ha baserat på våra erfarenheter från verkligheten där ute. Själva upplägget blir kanske lite annorlunda mot vad man är van med, och vi lovar att ge järnet hela vägen in i kaklet. Speciellt ser jag fram emot att få ge bort en Surface till den deltagare som vinner tävlingen, det hittar du information om när du går till Informator eventsida som är länkad i början av det här inlägget. Målet med dagen är i alla fall att ha kul och komma hem med en hel del argument till varför man ska satsa på Microsoft SQL Server 2014, och givetvis lite nyvunna kunskaper.

1/22/14

Kurser

Här nedan hittar du kurser jag håller. Det är länkar till både Informator där jag håller min majoritet av kurser samt till Microsofts egna produktsidor. Jag kommer lägga upp en lista med kursdatum där jag är bokad framöver i det fall du vill gå på kurs. Lite extra kul är det att nämna att första kursen på SQL Server 2014 finns tillgänglig, och att det är en uppgraderingskurs där vi tittar på hela produkten.

MS10977A: Upgrading Your SQL Server Skills to Microsoft SQL Server 2014Official
T618: Informationsbehandling med SQL
MS10774A: Querying Microsoft SQL Server 2012Official
MS10775A: Administrating Microsoft SQL Server 2012 DatabasesOfficial
MS10776A: Developing Microsoft SQL Server 2012 DatabasesOfficial
MS10777A: Implementing a Data Warehouse with Microsoft SQL Server 2012Official
MS10778A: Implementing Data Models and Reports with Microsoft SQL Server 2012Official
MS20465B: Designing Database Solutions for Microsoft SQL Server 2012Official
MS20467B: Designing Business Intelligence Solutions with Microsoft SQL Server 2012Official
MS2778A: Writing Queries Using Microsoft SQL Server Transact-SQLOfficial
MS2784A: Tuning and Optimizing Queries using Microsoft SQL Server 2005/2008R2Official
MS6231B: Maintaining a Microsoft SQL Server 2008 DatabaseOfficial
MS6232B: Implementing a Microsoft SQL Server 2008 DatabaseOfficial
MS6234A: Implementing and Maintaining Microsoft SQL Server 2008 Analysis ServicesOfficial
MS6235A: Implementing and Maintaining Microsoft SQL Server 2008 Integration ServicesOfficial
MS6236A: Implementing and Maintaining Microsoft SQL Server 2008 Reporting ServicesOfficial
MS50399: Designing a Business Intelligence Solution by Using Microsoft SQL Server 2008
MS50400: Designing, Optimizing, and Maintaining a Database Administrative Solution for Microsoft SQL Server 2008
MS50401B: Designing and Optimizing Database Solutions with Microsoft SQL Server 2008Official

SQL Server 2008 SP3 Cumulative Update 15 Released

Read all about it at: http://support.microsoft.com/kb/2923520/en-us

11/26/13

Out of Memory exception, SQL Server 2012 hotfix

I'm back from the MVP Summit 2013 R2, a cool week of SQL nerdness in Bellevue, WA. I've Heard all the juicy, cool stuff about SQL Server now and the future and it really hurts not being able to talk much about it. Being a MVP is surrounded with much NDA and supersecrets that are not available for disclosure yet. I'll promise you all I'll get back on this when time is right.

Anyways, for this post I've chosen to give you readers a link, http://support.microsoft.com/kb/2769594.

It's for a hotfix, fixing something unusual. It fixes a Out of Memory Exception that occurs on SQL Server 2012. What happens is a memory leak by the MEMORYCLERK_SQLLOGPOOL which is used for transaction log activity. If you're running AlwaysOn and have a huge buch of availability databases this could occur in your setup.

Failed allocate pages: FAIL_PAGE_ALLOCATION 8
Error: 701, Severity: 17, State: 107.
There is insufficient system memory in resource pool 'internal' to run this query.
Error: 701, Severity: 17, State: 123.
There is insufficient system memory in resource pool 'PoolName' to run this query.
Error: 701, Severity: 17, State: 107. (Params:). The error is printed in terse mode because there was error during formatting. Tracing, ETW, notifications etc are skipped.
Error: 17312, Severity: 16, State: 1.
SQL Server is terminating a system or background task HADR Task due to errors in starting up the task (setup state 1).
AppDomain 3181 (<appdomain>) is marked for unload due to memory pressure.
AppDomain 3181 (<appdomain>) unloaded.
Error: 9602, Severity: 16, State: 1.
Failed to start a system task with error code 28709, state 19.
Error: 17300, Severity: 16, State: 1.
SQL Server was unable to run a new system task, either because there is insufficient memory or the number of configured sessions exceeds the maximum allowed in the server. Verify that the server has adequate memory. Use sp_configure with option 'user connections' to check the maximum number of user connections allowed. Use sys.dm_exec_sessions to check the current number of sessions, including user processes.
Error: 17312, Severity: 16, State: 1.
SQL Server is terminating a system or background task HADR Task due to errors in starting up the task (setup state 1).
Error: 18054, Severity: 16, State: 1.



7/21/13

Physical forms of a table

I just had this question in my email.

"
Dear dbguru,

How do I find which tables that are heaps and/or clustered?

Best regards,
XXX
"

Well, first of all the XXX person has probably been to TechEd 2013 in Madrid, and maybe seen the keynote day one when they did a great demo of GeoFlow. If you haven't seen it you have the link here, http://channel9.msdn.com/Events/TechEd/Europe/2013/Key01. The most juicy part is appr 1 hour into the keynote when Dandy Wein, @ilikesql, enters the scene and do a demo of GeoFlow. It's about ten to fifteen minutes... Anyway, I wore that jersey with pride all week!

Secondly, XXX, has a real name too. But I have decided to leave the person out of this.

Ok, let's get back on track.

In SQL Server the tables are either one of two basic physical forms; HEAP or CLUSTERED INDEX.
* A heap is a table without a clustered index, i.e. this table stores the rows in any order on data pages. This means that when you insert a row it ends up on any of the available data pages assigned to this table.
* A clustered index on the other hand has a clustered index key, which is one up to sixteen columns, with a width up to 900 bytes, that determines on which data page the inserted rows should end up on. This index clusters the rows on pages. This means that rows that is relating to each other can end up close to each other in the database.

Ok, how do I find out how my database is configured related to this?
Well, you could run the following query!

SELECT
QUOTENAME(s.name) + '.' + QUOTENAME(t.name) AS TABLE_OBJECT,
CASE
WHEN i.type = 0 THEN 'HEAP'
WHEN i.type = 1 AND i.is_primary_key = 1 THEN 'CLUSTERED INDEX (' + i.name + ') AS PRIMARY KEY'
WHEN i.type = 1 AND i.is_primary_key = 0 THEN 'CLUSTERED INDEX (' + i.name + ')'
END AS TABLE_PHYSICAL_FORM
FROM sys.Schemas s
INNER JOIN sys.Tables t ON s.schema_id = t.schema_id
INNER JOIN sys.Indexes i ON t.object_id = i.object_id
WHERE i.index_id < 2
If i.type equals 0 the table is a heap, 1 means a clustered index, 2 means a non clustered index and i.index_id is the sequential id of indexes on a table, 0 is heap, 1 is clustered index, 2 or larger *) is a non clustered index.

*) There are more types of indexes than I cover here. Just larger than 2 is not the whole truth, but it's Close enough in this blog post.

7/16/13

Updates

As from today you all can update your SQL Servers, at least 2008 SP3 and 2012 SP1.

Check these links out:
* SQL Server 2008 SP3 Cumulative Update 12
* SQL Server 2012 SP1 Cumulative Update 5

Enjoy!