Database Health Reports Beta 9 – Released

Today I have released beta 9 of the Database Health Monitor.

It has been 27 months since the release of Database Health Beta 1, and almost 4 years since the original SSRS implementation of Database Health reports.

To be honest for the first half of 2014, I didn’t contribute much to the Database Health Reports, then in the couple of months, I realized just how many people were really using Database Health Reports, with over 15oo active installs world wide. This changed my outlook on database health reports and I decided to buckle down and focus on the project again.


Beta 9 includes the following new features and bug fixes.

New Features

  • Added new real time report for Active Queries. This report shows the queries that are currently running (or blocked and waiting) on the current database. This was based on a customer request.
  • Right click menu option in the database tree view to sort the list of databases by either the database Id or alphabetically by name. This was based on a customer request.
  • New real time report to show database files with IO and stalls for database files and logs.

Bug Fixes

  • Improved the column formatting on the Identity Column Usage report. In some cases the columns were sized too small to read the column titles. This has been fixed.
  • Broken links have been fixed. There are a number of help links in the system that were linking to, these have been fixed to link to
  • Fixed crash caused by attempting to connect to a SQL Server that no longer exists.

With Beta 9 there has been more extensive testing with SQL Server 2014 to confirm that all the reports work correctly, so far there have been no problems with SQL server 2014.

Another infrastructure change with Beta 9 is that I migrated the source control system from Subversion and switched to Git. This has allowed for much easier branching and the addition of new code into the system.


If you are using Database Health Beta 8, I recommend you update to the latest free beta version at

Updated Introduction To Uzility Video

Last week the Uzility team did a number of live broadcast training sessions covering details on getting started with Uzility, importing cards, working with cards and everything else that you might want to know about Uzility.  Here is the overall full length video training session.


SQL Forensics

If you owned a convenience store, or other business that was likely to get robbed you would likely have surveillance cameras with the intention of having evidence to provide the police with the information that they need in order to track down and prosecute the person who may rob the store.


Most of our databases have far more value to our company than the entire contents of a small convenience store, and whether you are willing to admit it or not they are probably more likely to get hacked than a convenience store is to get robbed. But we don’t have the surveillance system in place to monitor what happened when and why.

Once you have been hacked it is very challenging to find out what someone may have done to your databases, especially when you don’t find out for several months.

As a DBA, imagine your manager coming to you saying that 3 months ago between the 10th of the month and the 26th of the month the IT team has determined that a hacker obtained unauthorized access to the network. They have a log of all files that were transferred out of the network.  What we need from you is to know that parts of the database did the change or modify. Did they install a job anywhere that checks for confidential information and emails it to them on a regular basis, did they alter a stored procedure to move money into their account? Did they add another user to the database that will allow them unlimited access whenever they want? How would you answer these questions.

It would be nice if we could just ask SQL Server for a forensic analysis of what occurred between the dates in question and get a quick summary of what was changed, who was in the system and what might have been done. Unfortunately SQL Server doesn’t have a good way to do this, you could get a product that would scan the transaction logs to show what may have changed, if you still have the transaction logs from 3 months ago. You could get some of what you are looking for from Extended Events, maybe some from SQL Source control if you are using a source control product.

All those after the fact solutions are like working with a sketch artist for a convenience store robbery because you didn’t have a functioning camera.

If your company is large enough to have a data center, or to use a data center co-location facility there are probably plenty of cameras. But none of the cameras will catch the hacker with remote access to your systems.


Many of us when asked what changed on our SQL Server 3 months ago over a 2 week period would probably do some research and eventually come up with the “I don’t know” answer. Management may see it like this… “You don’t know if anyone did anything to compromise the integrity of your database, What good are you?”

How do we solve this. Plan ahead, it can actually be easier that installing video cameras. Anyone who has ever installed surveillance cameras knows how painful it can be to get them in the right place, the right angle, the right view.

Github Open Source Project

Introducing SQL Forensics, an open source project that I have just started hosted at Github.

The reason that I have created this as an open source project is to have the highest level of transparency in the project. All the source code is there so look it over, don’t trust me, confirm for yourself everything that it is doing to monitor your system, and if you don’t like something it is doing, then just change it.

What does it do today… Not much since I just started working on it yesterday. But here is where I plan to go with it.

  • Tracking of who changed what and when
    • Stored Procedures
    • Functions
    • Tables
    • Triggers
    • Foreign Keys
    • Schemas
    • Users
    • Logins
    • Permissions
    • Add/Remove a Database
    • Database configurations
    • Instance / Server configurations
  • Alerting
  • Investigation Tools

So far if you install the SQL Forensics database it tracks any changes made to the global configuration settings for the current server, sp_configure. You can see the baseline, and any changes by querying the [Log] table.

SELECT li.[name], cast(l.[whenRecorded] as datetime), l.[value]
  FROM [ForensicLogging].[Log] l
  INNER JOIN [ForensicLogging].[LogItems]  li on li.[id] = l.[itemId]
  ORDER BY [whenRecorded] DESC;

sp_configure_advanced_optionsThis shows that sp_configure ‘show advanced options’ was changed 3 times, but reconfigure was never run.  The value column shows the configuration value, as well as the value currently in use.



What would you need to know?

What do you need to know for a proper SQL Forensic investigation to know if someone is in the system?  Drop me an email or post a response to this message with your needs.


Uzility Board Background Images

Uzility is introducing the new board background images. Anyone using Uzility can set a custom background image on any of their boards. This is a new per user setting, allowing for the personalization of the agile board that everyone should have access to.

Some competitors offer the ability to set the background image only in their premium package. This new feature is available to everyone using Uzility regardless of the package they are using. Backgrounds are even available on the free single user product.

Over the last year we have added many features to Uzility, this one however is one of the more fun features that I have worked on.
Here is an example of a personal board that I have configured with a custom background, this board is being used to plan a family trip to Vancouver Canada.


Another example is my “development” board, for this board I have specified a blue gradient background that I found using the Google image search feature.


Here is how it works. First if you don’t already have a background, go to Google or your favorite search engine, and search on large background images. Once you find one you like, download it to your computer. Now you are ready to set that image as your board background.

Right click on the empty space on the background of one of your boards. Choose Backgrounds … Set Board Background.


You will be prompted with the Add Background dialog. Click the “Choose File” button and browse your computer to find the image you downloaded earlier.


Once you have selected the file, just click the “upload” button and your page will refresh with that image as your board background.




Your board is now transformed from a plain white background to any possibility of amazing images.

This background will only be available to you, other users will need to set their own background.

You can set a different background on each of our boards in the Uzility system.


Visit to find out more.

Uzility – Importing Boards From Trello

For Trello users it is quick and easy to get started with Uzility.


Just follow these simple steps and you will have your data migrated from Trello to Uzility in no time.

Log into your Trello account anc click through to the board you want to export. Click to open the menu area on the right side of the screen.


Choose the “Share, Print and Export…” menu item.


Choose the “Export JSON” option, the JSON file will open in your browser. Right click the browser showing the JSON file, and select Save As. Give the file a name on your local computer.




Now to import to Uzility

From the main dashboard page in Uzility click the “Import stories to your backlog” link.









Browse your computer to find the file you downloaded from Trello.

Click the upload button, and Uzility will create a board, and cards for you.



It is that quick and easy for Trello users to get started with Uzility.


See for more details or sign up today.


Uzility – What do do with cards when you are done.

The question with agile boards is what to do with the cards when you are done with them.  You probably don’t want to delete them, as you may need details associated with a card for future reference.  You don’t want to leave them on your current board, this will just clutter up the screen.

Uzility has the option to archive cards. An archived card goes away from backlog planning, and all boards in the system. It almost appears as though it has been deleted, however you can get it back from them Archived cards page.

Lets take a look.

Lets assume you have completed and wish to archive card #1047 as shown here in the complete column. You simply right click on the card and select “Archive Card”.



At this point the archived card (#1047) will disappear and you might think the card has been deleted.

If you want to go find that card, just click the reports icon (“the clock in the top bar”), then click on the “Archived Stories” link in the navigation bar.  You will the see that card #1047 is in the list along with several other cards that have been previously deleted. The column headers all have search fields so that you can easily find cards that were archived even if they were archived months ago.



Now that you find the Archived card, what can you do with it. You can right click on any archived card, from the right click menu you have a choice to Edit or Un-Archive.




The archiving option allows you to keep your backlog and boards clean and uncluttered.

Related Links