I had the opportunity to speak at SQL Saturday Phoenix this last weekend. It was a beautiful day and I got to meet some people that I had only talked to virtually and catch up with people that I hadn't seen in awhile.
I was doing a session on statistics that I had done back in January. About a month ago, I purchased a Surface Pro and since I'd installed SQL Server 2012 on it, I thought I'd try using it for my session. The Surface worked well and everything was going great until I got to my demo. For part of the demo, I show the different ways that you can view the statistics on your tables and one of the methods is with the DMF sys.dm_db_stats_properties. That DMF was release in SQL Server 2008 R2 SP2 and is great because it can show you the number of modifications to a column since the last update. So, I ran the statement using that DMF and got this lovely message:
Invalid object name 'sys.dm_db_stats_properties'
Needless to say, I was confused. I'd done this session on SQL Server 2012 (on my laptop) and it worked fine. I verified that it wasn't a typo. So instead of going insane (my first thought), I did a little dance, said that I would blog about what the problem was and went on with my demo.
In the back of my mind, for the rest of the session, I remained confused. Isn't SQL Server 2012 > SQL Server 2008 R2 SP2? Actually, no and that was the problem. SP2 for SQL Server 2008 R2 was actually released after SQL Server 2012 RTM. I hadn't had the chance to update my surface to SP1, so sys.dm_db_stats_properties didn't exist yet.
As a result of this, I was reminded of a couple of things. One – versions and service packs in SQL Server aren't necessarily linear. The second (and more important) is to go all the way through your session on the machine that you're using to present. I know better, but I'll cut myself some slack this time. SQL Saturday Houston should be smoother. :-)