It’s taken longer than I thought it may and I’ve run into several problems along the way but had a few people in the MVP community swing some homeruns to help me complete the BETA of this new SQL Server community query tuning tool.
What is “How’s My Database?” I’d say it’s something that should have been written a long time ago. Query tuning is a difficult task and can take a lot of practice to become good at. My hopes are that this tool will help the community tune their queries easier, raise awareness to certain issues, and train up those that are just starting out.
You can find the tool in the Windows 10 app store. Just search for “How’s my database”.
How’s My Database is a simple Universal Windows App (UWP). Microsoft didn’t include SYSTEM.DATA.SQLCLIENT in UWP until recently with the release of .NET STANDARD 2.0. Since then they’ve added enough features to allow me to create this tool. I’ve also included the Syncfusion treegrid control to aid in displaying a query plan. I’d like to also thank ComponentOne for lending me some tools for this project; however, I didn’t end up using any.
I’d really love if Microsoft could add SYSTEM.DIAGNOSTICS.PERFORMANCECOUNTER to UWP apps so I could truly write the health check or migration app I’ve always wanted to. Sadly I don’t think it’s on any road map.
UWP is limited from accessing the network locally and thank you to Lance McCarthy of Telerik for helping me with a workaround to access local SQL instances from the tool. You simply need to grab the Windows 8 AppContainer Loopback Utility and use it to unblock any UWP app.
Without this tool you won’t be able to connect to a SQL instance on the local machine.
So what can this tool help with? Lot’s of things.
For example, the “Problems with IN” post I wrote sometime back (thanks Joe Sack for teaching me this).
It can tell the difference between a scan forced by a UDF or scalar function as well.
There are actually about 40 things it checks for.
Current limitations are that queries with a cursor or temp table are not analyzed. There’s also a bug where the missing indexes and warnings appear on the wrong node/operator. Since the tool is using estimated plans at the moment, it may not be as accurate.
I’m planning on a few new features in the next month to add feeding the utility a query plan and displaying the original query. I’m also planning on adding history and the ability to execute a query from the tool. Before we get to those we need to fix some known bugs though. I’m hoping that you. Yes! you can help me identify other bugs to make this a great tool for the SQL community.
Please keep in mind that this is a BETA tool and it’s also free. Please use kind words.