A Rose By Any Other Name

SQL Server
There is only one kind of execution plan within SQL Server. I've said this several times on this blog. Now, I'd like you to go and read this excellent blog post by Hugo Kornelis. Hugo, Erin Stellato and I are working with Microsoft to hopefully, at long last, make this issue clear. In the grand scheme of life, like Shakespeare's rose, the name we use for execution plans doesn't really matter. However, the fact is, language really does matter. Clarity is so important in communications, of any kind. When we try to teach execution plans, the confusion caused by the old naming standards is one of the first things we have to spend time getting people to un-learn. I fully support this newly proposed naming standard: Execution PlanExecution Plan Plus…
Read More

Query Store, Plan Forcing, and DROP/CREATE

SQL Server, T-SQL
I absolutely love Query Store and the ability it provides to force a plan is amazing. However, there are a lot of little gotchas in this functionality. I just recently found one that has quite a far reaching effect. Let's talk about what happens when you DROP and then CREATE a stored procedure. Query Store and Plan Forcing Let's quickly recap how Query Store works and how Plan Forcing works. First, Query Store is driven by query, not by procedure, not by batch, but by query. Second, plan forcing is also by query. However, there are queries and there are queries. Let's take this as an example: CREATE PROC dbo.AddressByCity @City NVARCHAR(30) AS BEGIN SELECT a.AddressID, a.AddressLine1, a.AddressLine2, a.City, sp.Name AS StateProvinceName, a.PostalCode FROM Person.Address AS a JOIN Person.StateProvince AS…
Read More

Are You Still Worried About Data in the Cloud?

Azure
There really are technology stacks and business use cases that should never be moved off of big iron. Then there's the rest of us. Chances are very high if you're not already starting to move your data storage to the cloud, it's being discussed right now in your business. I helped put together a new report on the current state of databases that are not under your direct control. It's free to download and available over at Dzone. If you haven't made the move yet, or are just getting started on becoming one of the millions of companies that will be hybrid, part cloud-based, part local, then I strongly recommend you check it out. The trends are clear. Smart people are taking advantage of what services like Azure, AWS and…
Read More

Redgate Software Needs You!

Redgate Software
I've been very blessed to be able to work for Redgate Software. We've done some amazing stuff over the years. We're going to be doing even more amazing stuff coming up. However, we need help. Specifically, we need help with sales. We've got a great team, but we need a bigger, great team. There are openings for sales development representatives and there's going to be a try-out in March, but you only have a couple of days to apply. Go here, right now. Deadline for this is the 26th of February, 2020. When you fill out the application, please, use my name "Grant Fritchey", to show where you heard about it and who referenced you. There are a whole slew of other openings in sales as well. Please, take a…
Read More

Extended Events: Database Auditing

SQL Server, You Can't Do That In Profiler
Extended Events can do things that simply are not possible with Profiler and another example comes from the stack of audit events that exist only in Extended Events. One of these is a set of expanded events for database auditing. Comparing the list of things exposed through Extended Events to those exposed through Trace/Profiler isn't entirely fair. All new functionality is only in Extended Events since Trace hasn't been updated since 2008. However, these events that you can use to audit your database, aren't new functionality, they're just new events for watching old functionality. The addition of new events is just one more reason why moving to use Extended Events is a must. Auditing Databases In this instance, when I say audit the database, what I mean is keep an…
Read More

Why I Support Code Automation Tools Like ORMs

DevOps
I know I'm a weirdo. I've always been a weirdo. When I was a DBA (now I only play one on TV), I was a weirdo too. Case in point, ORM tools. Whether we're talking nHibernate, Linq, or Entity Framework, the degree of loathing for these tools by most DBAs is really hard to measure. Yet, after an initial period of difficulty (here are some ancient blog posts documenting that pain), I've come to believe that code generation tools are a very important part of what we do. Further, that they are not evil, or wrong, or bad. Let's talk about this just a little. A Tale of Two Teams At my previous employer there was a degree of friction between the developers and the DBAs (shocking, right). Both sides…
Read More

Be Kind

Professional Development
Simply put, we are not always going to agree. Please, take this as someone who was nicknamed "The Scary DBA" for reasons comic and tragic. I've screwed up a bunch of stuff in my career. Yes, some of it was through ignorance of technology. However, most of it was through badly managed interpersonal relationships. I was not always kind. I was not always empathetic. I caused problems on teams sometimes that were just unnecessary. If I had just thought things through, a little, and practiced more kindness, I'd have had a much nicer time of it and influenced people in a more positive way. Now, I read this post by Jennifer Jones. I wanted to get angry at people for not treating her well. But all I could think about…
Read More

Extended Events: Histogram Output

SQL Server, You Can't Do That In Profiler
The single most important thing to remember about Extended Events is that this functionality is not simply a replacement for Profiler/Trace, but a whole new tool with new functionality. My first example for functionality that you simply cannot get in Profiler/Trace is the ability to output to a Histogram. Profiler/Trace can output to a table or to a file. Extended Events can have a target that is a file, same as Profiler. However, you can also have a target: etw_classic_sync_targetevent_counterhistogrampair_matchingring_buffer Read about each of the types in the Microsoft documentation here. I'm going to focus for the moment on the histogram target because it lets you do some fun stuff and easily collect data that you simply can't collect using Profiler/Trace without hopping through a bunch of flaming hoops. Setting…
Read More

The State of Database DevOps 2020

DevOps
I've been an advocate for database DevOps since before DevOps was a thing. When I first switched from being a developer full-time to being a DBA full-time, the first shock to my system (and there were a lot of them) was that people didn't put their database code into source control. Turns out, at the time, more than 20 years ago, the reason was because it was brutally difficult to do. Fast forward to today, and there are no serious impediments to implementing source control for your databases. Further, the impediments to automating more and more of development, testing, and deployments for databases are shrinking faster and faster all the time. Whether or not you're doing a literal DevOps process, the concepts of breaking down the barriers to communication, adopting…
Read More

Profiler: Time To Go

SQL Server
I've decided that, in fact, it is time to start moving people off the ancient technology, Profiler. Before, I always said, stay where you're comfortable. However, keeping people comfortable means that they're also going to keep promoting Profiler/Trace to new people on new platforms. That is a real problem. To fix the problem of old school, slow, inferior, methods of data collection, troubleshooting, and consuming metrics, we need to educate people. Extended Events are not simply a replacement for Trace. They're not simply another way to gather query metrics. No, in fact, this is a whole new tool, with new functionality and a very high level of support and engagement from Microsoft. Extended Events are where all new functionality since 2012 provides mechanisms for monitoring behavior. As technologists we should…
Read More