October of Awesome!


, , ,

I can’t believe that we’re halfway through October! This month has simply flown by. But the best is yet to come!!!

This Tuesday, I will finally be presenting at my own Chicago Suburban SQL Server User Group! I will be debuting my new and improved Why Your Datatype Choices Matter presentation.

Then a week from today, I am honored to be back at SQL Saturday Oregon. There, I will be presenting this year’s flagship presentation: Performance Pitfalls of Code Reuse. I’ve had a lot of fun presenting this session over the course of this year, and it’s been a fantastic way to also showcase my sp_helpExpandView tool.

Finally, a week and a half from now, I will be making my debut at PASS Summit 2016, presenting Why Your Datatype Choices Matter! This improved session is a 200 level session, with some splashes of 400 level content thrown in! There’s something for everyone! I’m blessed to be in the very first speaking slot, Wednesday morning at 10:15AM in Room 2AB! Come see me after the introductory keynote!

I’m really looking forward to seeing friends, new and old, at PASS Summit. And if we’ve never met, do come find me and say hello!

PASS Board of Directors Elections

It’s that time of year again. While we may all be glued to the POTUS elections, there’s another election that impacts all of us members of PASS – the annual Board of Directors election.

I am generally not one to take sides publicaly. But I did write a Statement of Support for Wendy Pastrick, and decided to publish it here.

I am writing today, to provide a Referral Statement of Support, for Wendy Pastrick.

I have known Wendy for a number of years now. I’ve worked with her to organize several SQL Saturday Chicago events now. While she has operated as our committee’s leader, she has also formed a strong, dedicated team of individuals that have made this a very successful event.

Additionally, she also gave me the opportunity to take over and reboot the Chicago Suburban SQL Server User Group. She provided guidance and mentoring in helping me start a new User Group.

Wendy Pastrick’s actions and support truly embody what I believe PASS is all about. She continues to give selflessly, to help our community grow, strengthen, and flourish.

In the end, we’re all faced with a choice – to participate and vote in the PASS BoD election, or exercise apathy and not. I choose to participate, and I hope you do too.

Please vote!

Summer of Presenting!




It’s been a couple of months since I was honored with an invitation to speak at PASS Summit 2016. I’m still overwhelmed, amazed, and grateful, when I reflect on my career journey since my first PASS Summit in 2013. Speaking at the PASS Summit is an opportunity that I never imagined that I would receive.

Fast forward to a few weeks ago, when I received an e-mail from PASS, inviting me to present at 24 Hours of PASS: Preview Edition!! This special event highlights select speakers from the upcoming PASS Summit.  It’s one thing to be picked just to speak at PASS Summit, but is a double-honor to be asked to present at 24 Hours of PASS!

Because I’ve presented my Summit Session: Why Your Datatype Choices Matter, at 24 Hours of PASS: Community Edition in 2015, it was suggested that I present another session to highlight myself as a speaker.  I decided to offer my new Performance Pitfalls of Code Reuse session, which I debuted earlier this year.  If you work with developers who favor an Object-Oriented approach to developing T-SQL, then this session is for you!
Since the beginning of the year, I’ve spoken at 6 SQL Saturdays and 2 User Group meetings!  At SQL Saturday Iowa, I debuted my 3rd session, Performance Pitfalls of Code Reuse, with great success! I’ve presented it 3 times thus far and have gotten rave reviews every time! I’m just thrilled that attendees are getting a lot of out of it and enjoying it!

But the fun isn’t over!  In addition to 24 Hours of PASS, I have 3 more User Groups (and hopefully 1 more SQL Saturday) lined up!  I’ll be presenting at the Chicago Downtown User Group in early September, followed by MADPASS in late September.  I’ll be presenting my Performance Pitfalls of Code Reuse session at both.  In mid-October, I’ll be presenting my new and improved Why Your Datatype Choices Matter session, at my Chicago Suburban User Group.  That’ll be a week before I present it at PASS Summit.


Things are really exciting for me right now, and I couldn’t be happier to be sharing the things I’ve learned with all of you.  Hope to catch you somewhere soon!

DIY Standing Desk: Part 2

It has been just over a year since I built and blogged about my DIY Standing Desk. These days, I work from home 2 days a week and work from my standing desk probably 80% of the time. When I first built my standing desk last year, I considered it an experiment and chose not to sink much money into it. But after a few months, I knew I had done the right thing, and over time I added more upgrades.


Standing Desk: V1

Standing Desk: V1 (@April 2015)


Standing Desk: V2

Standing Desk: V2 (@July 2016)

One of the first things I added was the AmazonBasics gel mat. My feet were getting fatigued and I knew that a good gel mat would help that out dramatically.  $40 well spent!

Then I added a set of Cyber Acoustics 2.1 speakers & subwoofer, as I love to listen to tunes while slinging T-SQL. This was just an inexpensive set that I had bought years prior and for my garage workspace.  And it works well enough to jam out tunes and give me that touch of bass.  At some point (probably around Black Friday/Cyber Monday), I’ll probably invest in a nicer more powerful 2.1 speaker set and a FiiO E10k DAC. I use the latter at the office with my headphones and love it.

Last fall, I became fed up with the scavenged wire shelves that held my monitor & laptop stand. I knew I was satisfied with my standing desk by that point, so I made another trip back to Ikea to add on a proper monitor shelf. I borrowed another idea from the Internet, purchasing Capita brackets & a Lack wall shelf. An hour later, I had a super sturdy & solid monitor shelf!

When the 2015 holiday season rolled around, I decided to finally upgrade my ancient 22″ monitor. While I’m normally a dual-monitor fan, I decided to go with a higher resolution, larger single monitor solution instead. Additionally, I knew I wanted a monitor greater than FHD (1920.1080) to enhance my workspace. After much research, I settled on the 27″ Acer K272HUL. I really liked the idea of WQHD (2560×1440) and preferred a 16:9 aspect ratio vs 16:10.  And I definitely do not regret the decision to try this.  The monitor is beautiful.  It is mounted at the proper height and distance, and I feel that it gives me a tremendous amount of screen real estate to work on.

To complement the new monitor, I also invested in some Antec LED bias lighting that was conveniently on sale. If you’re not familiar with bias lighting, this How-To-Geek article is a fantastic introduction.

Additionally I added an APC SurgeArrest P11VNT3 protector. Prior, I’d only been using a cheap power strip, but between two laptops, an iPad charger, phone charger, & monitor, I’d run out of room. I wanted more peace of mind, especially since I would now be keeping a second laptop there at all times. And of course, it was conveniently on sale.

A second laptop? Back in 2010, I purchased my first gaming laptop – a Sager NP8690. Sagers are the US rebrand of another company called Clevo, which make fantastic modular gaming laptops. My first Sager had served me well for 4 solid years, but the graphics card finally couldn’t keep up with the latest games, so I purchased another Sager in 2014.

Except for a dead battery, my first Sager was still a solid machine. I swapped in an SSD and it was back in prime condition. It has a great deal of horsepower underneath the hood, making it a fantastic base for my SQL Server VMWare Workstation lab. Now it lives as a underneath my standing desk, with its own dedicated keyboard & trackball. I just use Duplicate Screen to run it exclusively on the 27″ monitor, with its own dedicated HDMI connection.


So that’s my DIY Standing Desk as it is today. Usually I have my work laptop hooked up on the stand, with its own dedicated keyboard & trackball. And whenever I feel like switching to my personal laptop, I just hit the power button underneath, shift around keyboards, then switch the Input on my monitor.

My original investment was about $115. All of the above upgrades, minus monitor & second laptop, ran me about $120? So about $235 for my entire setup? Amusingly the monitor cost about $300! Nonetheless, I look at it all as money very well spent!

T-SQL Tuesday: #80 Give Yourself a SQL Gift!



This month’s T-SQL Tuesday, is hosting by Chris Yates (b|t). Coincidentally, it is also his birthday today! As such, he’s chosen this month’s topic to be present or gift oriented.

Reading Chris’s announcement post, I thought back to a recent conversation regarding purchasing of tools, to make our lives as data professionals easier. Many of us work for fantastic companies, but may not have the budget or ability to invest in tools for us.

My challenge to everyone is to consider giving yourself a gift and and purchasing a tool for yourself. Think about what you do on a regular basis:

  • Do you often find yourself comparing “identical” databases for drift or other reasons?  Like making sure pesky developers didn’t sneak in yet another index without informing you first?  Wouldn’t RedGate’s SQL Compare make your life more awesome?
  • Do you dig through Execution Plans regularly? How about investing in SQL Sentry’s Plan Explorer Pro version?  Because you’re already using the FREE version & know it’s awesome, right?  RIGHT?!?
  • Sling a lot of T-SQL code daily? How about Mladen Prajdić’s SSMS Tools Pack, which is chock full of awesome features that make a T-SQL dev’s life more awesome.

I will fully admit that the cost of any of these tools is non-trivial.  But on the other hand, this is about giving yourself a gift.  And this gift is hopefully something you’ll use on a regular, if not daily basis, in the course of your career.  Consider the value that such a tool would bring to your life.  So go ahead… treat yourself to a gift!

What a Difference a Year Makes!


, ,

A year ago, last June, is the last time I wrote a “soft” blog update. Since then, a tremendous amount has changed.






And how I’ve felt since getting the acceptance e-mail last night.




Since last June, I’ve changed employers. But more importantly I shifted my career path. I’d spent the better part of 10 years in Database Development roles, and felt it was time for a change. So I took an opportunity as an Operational DBA in a company with an extremely large environment. Now I’m working at a Managed Services firm, with a large team of other DBAs, on a variety of clients with some very large infrastructures.


The Chicago Suburban SQL Server User Group has continued to be a success. We’ve just hit our 2 year anniversary! We average 20-25 attendees a month, many of whom are regulars. And occasionally, depending on topic, we get more and/or even see new faces, which I always love!


I have also spent a lot of time speaking, over the past year. I’ve had the honor of being selected for a number of different regional SQL Saturdays. I was also flattered that SQL Saturday Portland accepted me. Portland was a big deal because that SQL Saturday preceeds PASS Summit, and often attracts many high-end speakers. I like to think of it as PASS Summit pre-partying!🙂


At the beginning of 2015, I developed a new SQL Session: Uncovering Duplicate, Redundant, & Missing Indexes. Like my first session, it has been growing, changing, and maturing, with each subsequent presentation. I’ve been very happy with it, as it addresses a niche of Indexing that one does not commonly see offered in sessions.

I decided to continue my “1 new session a year” rhythm, and spent a good chunk of Q1 & Q2 developing my new session “Performance Pitfalls of Code Reuse.” I wanted to create a session to highlight my sp_helpExpandView (https://sqlbek.wordpress.com/tag/sp_helpexpandview/?order=ASC) community tool, while diving deeper into the technical “why’s” that drove me to write the tool. I presented it for the first time a few weeks ago at SQL Saturday Iowa and it was a huge success!


In 2015, I submitted to speak at the PASS Summit for the very first time.  I only had one session in my speaking portfolio.  I figured given the # of speakers & abstracts that get submitted, that I didn’t have much of a chance.  And I was not accepted, but I was okay with that.  I got some interesting feedback and I went on.

For 2016, at the time of Call for Speakers, I had 2 sessions in my portfolio and was developing my 3rd.  So I submitted all three.  I also took lessons learned from my prior year’s submission, refined my abstracts, and provided far greater details in my submission application.  And well, I’d like to think that paid off in spades!!!

I attended my very first PASS Summit in 2013.  At the time, I never thought I’d get into speaking.  But now 3 years later, I’m not only a speaker, but am absolutely flabbergasted, humbled, and blown away that I am been selected to speak!


Yes, that’s me… that’s really ME!  EEP!

I will have more thoughts to share later, but I’m still absolutely floored by this honor.  I want to thank everyone on the Selection Committee for all of their hard work!  Congratulations to my fellow speakers, and to those who were declined, I’ve been there too – chin up and carry on, you guys are awesome too!


T-SQL Tuesday #77: My Favorite SQL Server Feature



Hello everybody!

I’ve been away from blogging for a bit longer than I care for, but Jens Vestergaard’s (b|t) T-SQL Tuesday Topic has brought me back into the fray.

What is my favorite SQL Server Feature?

Dynamic Management Views & Functions (DMVs & DMFs)

What are these? It is said that one’s eyes are the gateway to the soul, I say that DMVs/DMFs are the gateway into SQL Server! Formally speaking, the DMVs/DMFs expose internal information about your SQL Server. This information can be used to learn about its current state & health, and provides valuable insight for troubleshooting and tuning purposes.

Much earlier in my SQL Server career, I never knew much about how SQL Server operated under the hood. I only had knowledge of the things I could do directly, but I never questioned what was really happening behind the scenes. Then I attended SQLskills IE1 training, which was a turning point in my career. Among other things, it was my first exposure & deep dive into SQL Server Internals. I became enamored with learning how things really worked under the hood and the DMVs/DMFs became one of my best friends.

Since their introduction in SQL Server 2005, the number of available DMVs/DMFs has more than doubled. How can you see what’s available to you on a given SQL Server? One quick & easy way is to query sys.system_objects:

FROM sys.system_objects
WHERE system_objects.schema_id = 4
AND system_objects.type IN (‘IF’, ‘V’)
AND system_objects.name LIKE ‘dm_%’

Of these, what are some of my favorites?

  • sys.dm_db_index_physical_stats
  • sys.dm_db_index_usage_stats

Combining these two, gives me very useful insight into both the structure of a table & any indexes it may have, but to how my workload is actively making use of each of these structures. Data found here is extremely useful when it comes to performance tuning.

  • sys.dm_db_partition_stats

I like to use this DMV to get row count & page count information about a database. Its output gives me greater insight into the contents of a table, particularly without the overhead of a SELECT(1) for a quick row count or sp_spaceused execution. Personally I find knowing size by page count to be far more valuable anyway.

  • sys.dm_db_exec_connections
  • sys.dm_db_exec_requests
  • sys.dm_db_exec_sessions

Mixing & matching these three, you can obtain information regarding current connections and activity on your SQL Server.

I can’t tell you how many times I’ve had a “eureka” moment, discovering that a DMV/DMF exposed another interesting piece of information that I wasn’t aware of before. To say that there’s a wealth of information is an understatement. So whether you’re new or not to DMVs/DMFs, take another look – you too may find a new and useful gem hidden inside them!

And if you want to read all about all available DMVs/DMFs, be sure to check out Books Online: Dynamic Management Views and Functions (Transact-SQL)

T-SQL Tuesday #68: Round-Up


A couple of weeks ago, I posted an Invitation to T-SQL Tuesday #68: Just Say No to Defaults. Last week, #SQLFamily responded in force with 22 blog posts! There’s a fantastic wealth of information across all of these blog posts and I was blown away!

Without further ado, here’s the round-up!

I want to thank everyone for participating and sharing your knowledge. And I hope that those of you who are reading, but not yet blogging, will join us, start your own blog, and begin sharing your knowledge and your stories too!

Until next time!

T-SQL Tuesday #68: Changing SSMS Keyboard Query Shortcut Defaults


, , ,

Welcome everyone!

After being a long time read and occasional participant, I am honored and humbled to be your host for this month’s T-SQL Tuesday! In my Invitation to T-SQL Tuesday, I asked everyone to write a blog having something to do with “Defaults.”

For my contribution, I decided to blog a bit about SQL Server Management Studio. As a SQL Server Developer, I live my life within SSMS. As much as I like it, there are a variety of defaults that I like to change. And for today’s blog, I’m going to talk about Keyboard Query Shortcuts.

If you navigate to Tools -> Options -> Environment -> Keyboard -> Query Shortcuts, you will find that SSMS comes with a handful of defaults.

Tools -> Options

2_Query Shortcuts - Default
Query Shortcut Defaults

These three starting shortcuts are indeed very handy, but SSMS gives us a number of other blank entries to add our own. Wouldn’t it be a waste if we did not take advantage of them, to add in some of our own?

2_Query Shortcuts
My Default Changes

As you can see above, here are ALL of the new Keyboard Query Shortcuts that I add. And here they are in full:

  • Ctrl+3 = sp_help
  • Ctrl+4 = sp_helptext
  • Ctrl+5 = sp_SQLskills_SQL2008_helpindex
  • Ctrl+6 = sp_SQLskills_SQL2012_helpindex
  • Ctrl+7 = EXEC sp_whoisactive @get_plans = 2, @get_transaction_info = 1, @get_task_info = 2, @get_avg_time = 1, @get_outer_command= 1
  • Ctrl+8 = EXEC tempdb.dbo.sp_help
  • Ctrl+9 = EXEC sp_helpExpandView @ShowObjectCount = 1, @ViewName =
  • Ctrl+10 = EXEC sp_whoisactive @get_plans = 2, @get_transaction_info = 1, @get_task_info = 2, @get_avg_time = 1, @get_outer_command= 1, @delta_interval = 10

Let’s explore how I make use of each of these!

sp_help & sp_helptext

I use these two SQL Server built-in stored procedures on an almost daily basis. They’re extremely useful while in the midst of code, to check aspects of objects. How do you make use of it? Simple! All you have to do is highlight the object in question, then hit your Keyboard Shortcut!


Using sp_help, I can quickly peruse all available columns in a given object, double-check their datatypes, or take a quick glance at what foreign keys and constraints are in place.


With sp_helptext, I can quickly scan the contents of a view or stored procedure, when I don’t want the hassle of finding it & script it out via the Object Explorer.


SQL Server comes with a built-in stored procedure: sp_helpindex. sp_help also returns index information about a table. However, they don’t return everything. When I’m query tuning and checking underlying indexes, I need to know about INCLUDE columns. That’s where Kimberly Tripp’s sp_helpindex rewrite comes in.


Used in the same fashion as sp_help & sp_helptext, I now have in-depth index information available at my fingertips!


“Hey, why’s the server running slow right now?” Every time I hear that question, Adam Machanic’s sp_whoisactive is the very first thing I always run. If you don’t use this tool already, read more about it on Adam’s blog and install it NOW!

While you can run it without parameters, I like having some additional data points available to me, which require parameters. As you can see from the above command list, that’s a heck of a lot to memorize and re-type, so I’ve mapped that to Control-7.


If you’re like me and work with a temporary tables regularly, you’ll notice that the usual sp_help shortcut does not work. Not having sp_help information conveniently available for temporary tables is rather obnoxious, hence this particular Query Shortcut.

Executing sp_help against a temporary table, in a user database context, returns an error.

But with a modfication to execute from tempdb, we can get our sp_help data again!

Now I can have the same sp_help functionality and convenience with my temporary tables!


My final Query Shortcut executes my custom tool sp_helpExpandView. Used in the same way as sp_help, I can quickly reference underlying objects of a view. If you have to deal with untangling nested views, I would encourage you to check it out!

That’s it for my SQL Server Management Studio Keyboard Shortcuts. I hope you all found this insightful. If there are any Defaults that you like to change in SSMS, please feel free to share in the comments. Thanks for reading – until next time!

Invitation to T-SQL Tuesday #68: Just Say No to Defaults

Welcome to another edition of T-SQL Tuesday! Started by Adam Machanic (b|t), this is the SQL Server community’s monthly blog party, where everyone is invited to write about a common topic.

I am honored to be your host this month. This month, I’d like to ask everyone to blog about SQL Server Defaults. While SQL Server CAN be run with just the default settings, doing so is far from ideal. As we progress through our careers, many of us build lists of things we change. Let’s blog about those! And don’t think this month’s topic is constrained to just the SQL Server engine. SSIS & SSAS are absolutely fair game as well. SQL Server developer tools – sure! Want to take a different spin on “defaults,” go right ahead and be creative!

Need Ideas?

Do you have a checklist of “always change” settings? Blog about that!
Do you have a preferred method for mass-deploying your changes? Blog about that!
Do you have a specific default setting you ALWAYS change? Deep dive & blog about that!

Want to Participate?

  1. Write a blog post about the topic. Don’t have a blog? Start one!
  2. Include the T-SQL Tuesday Logo and link it back to this post.
  3. Publish your blog post Tuesday, July 14, between 00:00 GMT & 23:59 GMT.
  4. Leave a reply below with a link to your blog post (for the round-up).
  5. Share you post with the community! Tweet it out using the #tsql2sday hashtag!

Let’s have some fun! I’m looking forward to everyone’s contributions & learning something new!