Collation change script

20 Comments
Normally when I blog, I spend a lot of time making sure that get as close to perfection as I can. This post is an exception. The problem I am talking about is too far out of my main specialization area that I want to spend more time on it than I already have, yet what I have so far appears to be valuable enough already to warrant posting. Even in it’s current, unfinished and not fully tested state. The problem One of my customers called me to look at a problem where they were unable to upgrade a third…
Read More

Off Topic: Charity and snooker

No Comments
So this will be a very unusual post for this blog. It will be completely off topic. One of the things I do in my spare time is to play snooker. Mind you, I am not good at the game. But I enjoy it, and it’s a nice break from sitting at my laptop. Marathon So why do I share this tidbit about my personal life? Why do I think anyone cares? The reason is that I need some help. Next month, on February 15 and 16, 2019, I am participating in a 24-hour snooker marathon. And with my participation…
Read More

T-SQL Tuesday #110 – “Automate All the Things”

It is once more the second Tuesday of the month, better known as T-SQL Tuesday. This month, we got our writing assignment from Garry Bargsley (b|t). He asks us to write about automation: what automation are we proud of or do we want to complete, and using what technology? However, I found that I was more triggered by the title of his request post than by the content, so I’ll allow myself the liberty of applying a very loose interpretation of the topic. All the things? Garry titled his invitation “Automate All the Things”, and I plagiarized that title because…
Read More

Looking back to 2018

No Comments
We are approaching the end of 2018. It is December 30 as I start writing this (I’ll probably finish and publish it December 31), traditionally a time to look back at the past year. I often refrain from doing what everybody does because a certain date is on the calendar (my dad would sigh and suggest that I’m still not over puberty, and he’d probably be right). But in this case I’ll make an exception. For me, 2018 was mainly the year I started building my own website. The site where I publish my blog posts, but more important: the…
Read More

Plansplaining, part 9. Recursive CTEs

1 Comment
I had to skip three months, but finally it is here: part eight of the plansplaining series. Each of these posts takes an execution plan with an interesting pattern, and details exactly how that plan works. I am pretty sure that (almost) everyone reading this blog knows that a CTE (Common Table Expression) is an independent subquery that can be named and then referenced (multiple times if needed) in the main query. This makes CTEs an invaluable tool to increase the readability of complex queries. Almost everything we can do with a CTE can equally well be done by using…
Read More

More information in execution plans

1 Comment
Troubleshoorting performance issues can be hard. Having as much information available at our fingertips does not magically make this easier but it does at least save us the burden of having to collect that information from other places. That’s why I like how much extra information Microsoft has been adding to execution plans in recent releases. During this year’s PASS Summit, I went to a session presented by Pedro Lopes and Joe Sack. Pedro explained in his half of the session that Microsoft has the goal of making sure that everything we need for troubleshooting will be available in the…
Read More

T-SQL Tuesday #106: How to use triggers and not be sad

No Comments
The T-SQL Tuesday subject for September, chosen by Steve Jones (b|t), is to write about an experience I had with triggers. I decided to apply a very loose interpretation of his assignment and write more about triggers in general. Undeserved hate My very first SQL Server related job was quite unusual. I was added to a team that developed software using a code generator. We had to define business rules (such as constraints and derivation rules) on top of a conceptual information model for the company. The tool would then generate T-SQL code to support and implement those rules. The…
Read More

The best execution plan book ever written

No Comments
It all started back in 2012 – yes, six years ago! That was when I was first asked if I wanted to be the technical reviewer for Grant Frtichey’s book on execution plans. I obviously said yes … and then a lot of time passed because first Grant was busy, then we decided to wait for the SQL Server 2014 changes to become clear, and then yet other things intervened. Actual work started just over three years ago. If I had known back then that it would take this long, that I would spend so much time on this book,…
Read More

T-SQL Tuesday #105: Brick walls

1 Comment
It’s the second Tuesday of August already, and that means it’s T-SQL Tuesday time. This month’s topic, chosen by Wayne Sheffield (b|t), is to write about brick walls we ran into and how we dealt with the situation. Thinking about this topic, I remembered two moments in my career where I really was stuck … and then got unstuck in two very different ways. The unconscious solution The first event I want to share took place a long time ago. It was early in my career, my first programming job in fact. My job was to maintain and improve some…
Read More

Plansplaining, part 8. To join the impossible join

This is part eight of the plansplaining series. Each of these posts takes an execution plan with an interesting pattern, and details exactly how that plan works. In this post we look at a query that, given the known limitations of the available join operators, appears to be impossible to execute. But it’s a legal query so it should run. And it does. But how? Sample query The query below can be executed in any version of the AdventureWorks sample database. Don’t bother understanding the logic, there is none. It is merely constructed to show how SQL Server handles what…
Read More
Menu

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close