As I’m sure you know, Microsoft occasionally changes it’s mind. Or, it makes bad decisions and then rectifies them. Or, it even reinforces bad decisions. Regardless of the purpose, the means by which these changes are implemented when they involve taking things away is deprecation. Usually in SQL Server the deprecation process is supposed to be over three releases. So while seeing something on the deprecation list can be cause for concern if it’s something you like, you certainly don’t need to panic.
I’ve finally had a chance to start working with Denali and the place that concerned me most was in the areas of deprecation. I want to make sure that when I suggest a particular approach, that the approach isn’t going to disappear in a version or two.Which brings us to my personal little point of interest, execution plans.
When I originally wrote my book on execution plans (free download by the way in case you don’t have a copy), I talked about text execution plans as being on the chopping block. They still are.
I was reading through the online Denali documentation when I ran across this list of deprecated Trace Events (I was trying to see if Trace/Profiler was on the deprecation list, more on that in later posts). You’ll note that the deprecated events are the text plan events. Now, deprecation takes place over three versions, right? Clicking back through the different versions I see that these events made the list originally in SQL Server 2005. The documentation for Denali is clearly marked as “Preview Only” and subject to change. But, based on their own approach, in theory, these events are slated for removal in this version. Microsoft can change their minds and extend it a version (does R2 really count as a version?) or update the docs to show this as removed functionality, either way, if you’re dependent on the events listed, I’d start getting more comfortable with using XML plans.
To attempt to discern Microsoft’s plans for the trace events, I tried something.. a little weird. There are trace events that will tell you the status of things on the deprecation list, Deprecation: Deprecation Announcement, Deprecation: Final Support. The Final Support event is supposed to show those things that are currently on the chopping block, not just at some future point. What I did was set up a trace to capture showplan_all and then set up a trace to capture both Deprecation events. I didn’t get anything. Sorry. That just means we’ll have to work from the documentation, which tells us to prepare for those events to be removed from future versions.
I also tried out the showplan_all itself to see if that would pop up in the Deprecation trace. It didn’t. I don’t know if I should trust the Deprecation trace or the documentation on these things. If I find out one way or the other, I’ll put it up in a blog post.