You didn’t know that?! But that’s so obvious!

Rant-mode activated

Today I noticed a tweet from Andrew Prewski (@DBAFromTheCold)

Loving all the passive aggressive comments about my article on SQL on linux, keep ’em coming!

Andrew’s tweet piqued my interest and I went to look at his blog-post “Killing databases in SQL Server on Linux“. In the post, Andrew investigates how files are handled inside Linux, in particular how database files are handled. Go and read it, it is really interesting and a possible eye-opener for anyone who has no experience with Linux.

Now, the reason for this rant is the comments that came through from people who do have experience with Linux/Unix (go and read those too). Many of them boil down to basically scoffing at how Andrew didn’t know that Linux handles files differently to Windows and has done for years/decades. The tone of these comments were aimed to belittle Andrew for not knowing about this behaviour.

This pisses me off!

Maybe I’m just having a bad day or something, but it seems wrong to me that someone who is trying to learn should be made to feel in any way stupid for exploring something. It seems even wronger for this sort of behaviour to come from an area of the IT world which generally prides itself with the idea of “hacking”. The whole premise of taking a technology that you don’t understand and prodding, poking, dissembling and rebuilding – that is the “way of the hacker”, or at least how I have always understood it.

I for one hope that Andrew won’t be deterred by this shitty behaviour and also would hope that anyone reading this would think twice about how they respond to a similar situation. Everyone starts out at zero, not even Linus Torvalds was born being able to code.

Please remember: Don’t be condescending. Offer tips, advice or references to help, not ridicule.

My fifth (and simultaneously my first) PASS Summit

The PASS Summit is something special. It is the largest gathering of SQL Server aficionados on the planet. With attendance reported at over 4000 people each year, that is one biiig pile of SQL Server geeks!

As the PASS Summit is held in the USA, it is quite special to be able to attend for me (and many other non-US based people). I was lucky in having employers that were happy to send me on an all expenses trip to Seattle for the past few years (I skipped the Charlotte-based Summit to make sure my buddy and former co-worker @Fatherjack got to go). Attending has allowed me to learn plenty about SQL Server, but to also make some life-altering connections with people that I would probably never have otherwise met.

The first life-altering connections cajoled me into speaking at SQLSaturdays: my good friends André Kamman, Mladen Prajdić and Marco Blasio. They convinced me over many beers and steaks that speaking was the next step on my journey. This culminated in my submitting my very first session to SQLSaturday Exeter 2013 entitled “Replication: What, How and Why“. While nerve-wracking, it was one of the best career moves I have ever made. Since then I have spoken at numerous SQLSaturdays and other events around Europe and met a ton of people. My speaking career hit a couple of high notes recently, I was a contestant in last year’s Speaker Idol at PASS Summit 2015 (losing in the finals to David Maxwell) and also delivering both a standard session as well as a pre-con at SQLBits XV.

However, back to the title of this post. This was both my fifth and also my first PASS Summit. It was my first, because it was the first time I have delivered a full-length session at PASS Summit. I had submitted session in previous years, but failed to be chosen for varying reasons.

This year was different! I received confirmation that one of my three submitted sessions had been chosen…… Replication: What, How and Why! To say I was surprised is an understatement. After multiple years of not being chosen, I had received a positive response. On top of that, the session that started my speaking career had been chosen. This was quite unexpected, although in previous years when PASS had surveyed attendees on what subjects they would like to see more of, Replication was regularly in the top ten.

So I dusted off the session and made some much needed updates to the flow of the session and attempted to make the content clearer. I was surprised to find that I was able to rattle off the outline of the session pretty much from memory when practicing at home. The tweaks I made allowed me to run a full 75 minutes instead of a “normal” 60 like at most events.

I was assigned an afternoon session slot on the Thursday of PASS Summit. This means I would be in the middle of the conference, straight after lunch. Going by past experience at other events, this means that pretty much all attendees are still around (unlike Friday afternoon sessions, where many take an afternoon flight home), but as it is after lunch, some people struggle to stay awake! With that in mind, I tried to keep the audience engaged with questions and interaction. This is a great way of making sure that wandering minds are re-engaged and gives me something to focus my nervous energy on.

When I stepped into the session room I was more nervous than usual – the sessions are recorded and the room looked like it had seating for about 300 people! This is larger than most events and I assumed the room would be mostly empty. Replication is a niche subject/feature and I have had between 20 and 50 attendees in this session at other events. You can imagine my surprise when I saw about 60 people already in the room. I immediately took some photo evidence Smile


Please bear in mind that this was 20 minutes before my session should start, so I made sure that my title slide was visible to the entire room.


This didn’t scare anyone off, on the contrary, the room continued to fill. I was officially shocked/concerned and took more photos to prove to myself after the session, that I wasn’t dreaming. I went out of the main entrance to check that the signage for the room was right (it was) and the room attendant told me she had counted 220 people into the room with 5 minutes before kick-of!


I proceeded to deliver the session to a packed room, only a few seats remained empty with a number of people standing at the back of the room too. The session went great, with some fantastic questions from the audience – directing my explanations deeper where possible and ensuring people took the information they needed. I ended my session on time and fielded questions from about 20-30 people at the edge of the stage and then in the hallway afterwards. There are a lot of people using replication in ways that neither I nor (I’m sure) Microsoft had ever dreamed of. It was also great to hear that the SQLClinic, run by Microsoft, had a chalk-talk about replication and there were mentions of replication potentially receiving some more attention by the dev team in Redmond (about time if you ask me!).

The next few hours after my session were a blur of adrenaline. Even a week later, it is hard to believe that my first session at PASS could go so well (as far as I could assess). Now I need to wait for the session feedback and see what I can do to improve. According to some of my attendees, a deeper dive or extended session on replication is something for me to think about submitting next year.

All in all I can say that my fifth PASS Summit was great fun – I saw some new things, met some new people and enjoyed Seattle (again).

As for my first PASS Summit: fantastic. I never expected this “old” session to be such fun to present, or to be so well attended. I look forward to next year to see if I will be able to present a new session.

PS: If you attended my session, please fill in the feedback (or write a comment here). That is what helps me to improve my sessions and my presenting in general.

Thanks for reading and see you around.

Speaking at SQLSaturday Oslo

For Valhalla!!

I was very pleased to recently be chosen to speak at SQLSaturday Oslo on the 3rd of September. I spoke there last year and had a great time. The organisers of the event are really friendly and took us on a great trip up to the huge ski jumping location just outside town. I’m looking forward to what they have in store for us this year!

I will be presenting my session “You don’t need Enterprise Edition for do that!” a fun session showing that you don’t necessarily need Enterprise Edition to achieve some of its features.

Just the other day I was also asked if I could fill in a last minute cancellation, so will be delivering a second session “SQL Server 2016, is it worth the Upgrade?“, taking a look at the new features and whether they are compelling enough to make you want to upgrade.

If you are in the Oslo area and haven’t signed up for the event, do it! Going on last year’s success, this year will be well worth a visit! Check out the jam-packed agenda

See you there!

Database objects can DIE in SQL 2016 without using the KILL command

When developing database code for SQL Server one issue that has got in the way of smooth deployment has been a simple check for the existence of an object before creation.

The issue being, whenever an object should be created, we need to be sure that there isn’t an object already in the database that has the same name. If there is, we need to do something beforehand otherwise the CREATE command is going to fail like this:

Msg 2714, Level 16, State 6, Line 16
There is already an object named {objectname} in the database.

DIE Database Object, DIE!

Up until SQL Server 2016 the only way of making sure an object wasn’t already present was by adding a snippet of code directly before the CREATE statement. This could be achieved in multiple ways, but essentially all solutions just checked for an object with the name provided.

Something along the lines of this:


While that is a very short piece of code, it is still code that needs to be typed and checked and tested. Of special note is the fact that the object name needs to be correctly typed twice. Let us also not forget, because there are multiple ways of achieving this existence check a new developer may not immediately understand what this code is doing.

You may notice in the paragraph above the code example, I wrote “Up until SQL Server 2016….”. That is because with the release of SQL Server 2016, Microsoft has made our lives a little bit easier in this respect. It is now possible to do the existence check and the drop in one command rather than two.

The long-winded and more error prone example above simply becomes:


Wow! Drop Table If Exists, or DIE for short. Super-short (only one chance of mistyping the object name) and super easy for anyone to understand, right?

But wait! There’s more!

This existence check is not limited to tables. It covers many more objects, as outlined on the SQL Server Database Engine Blog.

But wait! There’s even more!

If you wanted to be really efficient and only want to write the (not really) verbose DROP TABLE IF EXISTS once for all the tables that you want to drop, you can!

This code will work flawlessly:

DROP TABLE IF EXISTS MyTable, MyOtherTable, YetAnotherTable

The elegance of DROP TABLE IF EXISTS is that if any (or all) of the three tables above exist, they will be deleted. If none of them exist, then nothing will happen.

And here is the catch

Unfortunately, the pluralised usage of DROP TABLE IF EXISTS doesn’t seem to work for all object types. I tried to do the same thing with database users:


This would end in a syntax error.

So there we have it. Objects can now DIE inside SQL Server, without the KILL command 🙂


At the time of writing I have not checked all of the supported objects of DIE, but will update this post once I have found the time to do so.

I’m on the Radio! SQL Server Radio

As the title states, I appeared on a recent episode of SQL Server Radio. This is a regular podcast focused, as the name suggests, on SQL Server. The two hosts; Matan Yungman and Guy Glantser have fun talking about their experiences with SQL Server from past and present projects in their careers and company (Madeira Data Solutions).

I’ve known Matan Yungman ( b | t ) for a while now. We met on Twitter and then in real life at one of the many conferences we were both present at (I think it was SQLBits, but I could be mistaken [UPDATE: It was at SQL Server Days in Belgium]). I then met Guy Glantser ( b | t ) through Matan and we have chatted a few times about different things around our lives with SQL Server. These chats recently culminated in an invitation to join them on their show to talk about my career with SQL Server and the journey I have taken so far.

We spent about half an hour talking about all sorts of things, to quote the show notes:


Specifically, we talk about:

  • His way for becoming an independent consultant
  • How to price yourself by value and not by time
  • SQL Server Replication tips
  • Tips for upgrading SQL Server with minimal downtime
  • What is the meaning of 5 nines and how much technical and financial investments it requires
  • When and how to use DNS aliases with your SQL Servers
  • Dynamic Data Masking use cases
  • Linked Servers performance tips


The interview was fun and I would love to be invited on the show again, Guy and Matan are really good hosts and made me feel at home.

If you haven’t heard any of their episodes, I highly recommend you do. This will give you a relevant topic to listen to while working or commuting, which isn’t dry and boring, bur rather a fun chat about (mostly) relevant topics.

I hope you enjoy it.

SQL Konferenz 2016 – Darmstadt Germany

I am pleased and proud to announce that I have been selected to speak at SQL Konferenz 2016. It is taking place on 23.02.2016 – 25.02.2016 in Darmstadt, Germany and is the leading SQL Server conference in Germany.

This year was the first time I attended and also spoke at the conference and I loved it, so when the call for speakers opened, I threw my hat in the ring. The conference organisers got in touch recently and chose my session “You don’t need Enterprise Edition for that”. I have delivered this session a couple of times before and had fun, so look forward to tweaking it slightly and presenting it in February.

Although the Agenda isn’t online at the time I am writing this, registrations are open and an early bird discount is available, so go on over and sign-up!

Growing a community is not easy……

…… But it is a lot of fun!

Last Friday I put on a small community event in my home town (#SQLGrillen). It was no SQLSaturday, with just four sessions and only 2 months preparation time, but it was a lot of fun!

Why would you do this? Why for free?!

I’ve heard those two questions a lot recently in the run up to the event itself, but also over the last year since founding the Emsland SQL Server User Group.

It seems to confuse people greatly that I would want to spend my private/personal time on “work”. I have wondered if this is a regional bias (I live in a quite rural part of Germany), or maybe a cultural one (many people I have met in Germany strictly separate work from private life). If the cultural reasoning holds true, then it would explain some of the difficulties of getting attendees for the user group. Either way, I don’t consider it to be “work”. Of course there is an overlap, it is a SQL Server user group and I work with SQL Server. However, I find the social aspect of a user group/event to be almost as important as the technical side. I probably enjoy exchanging ideas/war stories with fellow data professionals more than the technical content – somehow, even though I’m an awkward geek, the human interaction is the source of greater fulfillment.

Why would I do this for free? Why do people run marathons? Why do they join various other clubs in their spare time? Do they get paid to do this volunteer work? I think this goes back to the work/private life separation thing and people not understanding how I can mix the two.

Why would I not do this?

I have made some great friends and had some fantastic experiences as part of the community and hope to “infect” other people with the community virus. I also gained a lot in my career through the things I have learned (that I would never have been able to see in my normal work day) and have gained so many connections that I now don’t need to really look for new opportunities. If I wanted to swap jobs, I just need to explore the ones that get sent my way on a daily basis.

I am not that good that people want to hire me all the time, but being out there in the community makes me visible to companies/recruiters like nothing else.

We want you!

I realise that I am preaching to the choir when writing here (if you are reading a blog on SQL Server, you are already investing time that 99% of others don’t), but I’d still like to suggest that you get yourself involved in the community somehow. There are a wide range of tasks that User Groups, Events or Associations have that need doing and are too much for their current members/helpers to achieve. Even if you don’t want to speak, there is plenty of opportunity to get involved in another way.

So please, for the altruistic side of you, or for the “get ahead in my career” side of you; get in touch with your local User Group or Association and see if you can help out in some way. You will not regret it, I assure you.

P.S. Thanks to Rob Sewell ( b | t ) for the reminder: A few places for you to start would be finding your local PASS Chapter, or if there isn’t one where you are, there are also the Virtual Chapters.