Download

The first tool you reach for when SQL Server is slow

Database Health Monitor finds the slow queries, missing indexes, and blocking behind performance problems fast. Try it free for 7 days on your own server. No credit card.

Try it Today - Database Health Monitor

Free for 7 days · No credit card · Installs alongside your existing setup

1 Register for your trial. The button takes you to a short form ‐ just your email and name to send the download and trial key.
2 Download and unzip. Open the zip and run DatabaseHealthSetup.exe.
3 Connect and scan. Point it at a SQL Server instance and run a Quick Scan to see what it finds.

Thank you for using Database Health Monitor.


What People Are Saying About Database Health Monitor

Download Database Health Monitor
  • “I installed Database Health Monitor on many of my client’s SQL servers and believe it’s the best tool out there for SQL monitoring.” – Charles Ray – March 2022
  • This is a great application for SQL Server DBAing. We have a web based product but this one is so comprehensive, both high level and detailed. So much is available right at the click of a button, it is amazing! I am so grateful for the application, for the effort to build it, and the decision to share it. I know it has made me a better DBA, my organization has benefited from it, and I deeply appreciate all of that! Thank you! – Jesse – October 2021
  • Thank you a lot for this excellent application. I loved the “missing indexes” and “Statistics” section, it helps me to save time and effort for the weekly maintenance.
    Best Regards  November 2019
  • Database Health is the first tool that I pull up when someone calls and complains about slow performance in their applications, that be Dynamics NAV, Dynamics AX or even the webpages running slow. It saves me a lot of time finding the queries, missing indexes or what be it, causing the problem. This is by far the easiest and most effective tool to use, when searching for problems that need instant resolution. Thanx a million for your contribution to the SQL world.  September 2019.
  • This is an awesome tool to find issues and fix them or improve performance in areas that I didn’t even know we can.
  • I would like to thank you for sharing this product with us free. I have installed and using health monitor on my production DB.  very very nice…. Thank you so very much. I hope you will keep adding more features in this product. Well done  (Rohit)
  • Outstanding app. Already referred it to several friends in the field. Well I do have to say the changes you have made (regarding version 2.5), seems to have made everything in the interface much snappier. Your work here is quite impressive. (Frank from Texas)
  • Outstanding! Besides enjoying the layout of your app, one thing I really like about the Quick Scan Report is each entry has a corresponding link that discusses the finding so I can go back and review recommendations, cautions, etc. (Michael)

August 2026 Release – Version 1458 Release notes

New Features

  • More details added to the Blocking Query email.
  • Query Loading Ramp Additions
    • Live P95 latency trend chart (5th chart panel, full-width 3rd row) + latency section in HTML report
    • Think time jitter % field in config dialog, applied per-session
    • Run-phase-only avg query time (excludes ramp-up queries from the mean)
    • Command-line / headless mode
    • Option to display all the queries and plans (“Peak Plans”) at the highest CPU point of the load test.
    • Per-query result summary in the report
    • UI to HTML report export
    • Breaking point finder load test
  • Added role [DatabaseHealth_Viewer] for user access with least privilege
    • This sets permissions on master, msdb and dbhealthhistory
  • Added Stored Procedure [AddDBHealthViewer] for assigning role [DatabaseHealth_Viewer] 
  • Added QuickScan check #190. Alerts if DBCC CHECKDB has found allocation or consistency errors.
  • Added an Email Alerts Overview panel showing the number of alerts enabled on each server.
  • Alert emails now include the alert number and alert name in the subject line for easier identification and inbox filtering.
  • Alert history filtering now has a 1 day option, and the selected timeframe now sticks after a refresh instead of resetting to the default.
  • Added the ability to delete alert history, and a double click option on the alerting reports to view the alert detail.
  • Long Running Query alerts are now combined into a single email instead of one per occurrence, and now include a count of long running queries and the full query text.
  • Merged the tray icon’s 3 separate dialogs (server configuration, history, and settings) into one dialog with tabs.
  • The tray icon history dialog now supports filtering, an F5 refresh option, and an option to clear history.
  • Added a watchdog to the tray icon and Windows service that detects a stopped SQL Server or SQL Agent and automatically restarts it, aimed at older SQL 2012 servers. Note: if the SQL Server needs to be stopped for maintenance, the Database Health Monitor service should also be stopped if this feature is enabled.
  • Added a fallback stored procedure for sending the daily checkup email if the primary one fails, and a setting to ignore QuickScan items on the daily checkup.
  • Added a new QuickScan check for entries in the DBHealthHistory.dbo.ErrorLog table.
  • QuickScan results are now ordered with Urgent items placed at the top for immediate review.
  • Refreshed the main dashboard with a modernized card based overview.

Bug Fixes

  • Fixed a bug that was preventing the technical debt report from being shown.
  • Quickscan check #66 was slow if Active Directory was slow. Refactored and reduced the number of AD calls needed for AD users on this check. Overall significant speedup on this check.
  • Fixed alert #5008 sending multiple duplicate emails.
  • Fixed alert #5006 not honoring its custom exclusions and its “greater than” value filter.
  • Fixed a bug where DBHealthHistory databases could be created with AUTO_CLOSE ON, which can cause performance issues and temporary unavailability after the last connection closes.
  • Fixed handling of servers where the ssisdb database exists but its SSISDB catalog does not.
  • Fixed a possible null reference in CPU logging.
  • Fixed a duplicate ID in the QuickScan results, found before deploying.
  • Fixed a missing space in the message for QuickScan check #214, Agent Job Runs at Startup.
  • Fixed the tray application allowing two instances to run at once, and not picking up an updated binary correctly.
  • Fixed a bug where connecting to a server by an alias other than the internal server name could prevent the IO By Hour and Deadlocks By Hour Database level reports from being shown.

General Maintenance

  • Optimized QuickScan check #71 to avoid calling suser_sname and is_srvrolemember, improving performance; check #13 is now excluded on RDS.
  • Optimized QuickScan check #66 (sysadmin owned database check) to reduce Active Directory calls, significantly speeding up scans on servers with slow AD.
  • Extended the timeout on the Windows service’s 15 minute job, and added per procedure log retention so the 30 second checks don’t push the 15 minute logs out too quickly.
  • Made several historic database upgrade steps RDS safe.
  • Added indexes and columns to the DBHealthHistory.dbo.ErrorLog table.

May 2026 Release – Version 3.1341 Release Notes

Bug Fixes

  • Fixed a bug in the “Backup Status” instance report that would prevent the last full backup file from being displayed.
  • Fixed a bug in the Performance Viewer in how the number of user sessions are being tracked. It was double reporting some, now it is accurate.

New Features

  • On the Blocking Queries report it now has a right click option to kill the selected sessions, in addition to the original to kill the entire blocking tree. Customer requested feature and a great idea.
  • Added query parameters, html formatting and if available a brief query plan summary to the blocking query email notification.
  • Added a new dialog for query plan analysis that is available from the Query Advisor when the plan is available, for instance from the blocking history or long running queries reports.
  • Added config file setting for UseLicenseCache, when set to 1 it skips the internet license check on startup, specifically for offline servers.
  • Added a missing indexes column into the Blocking Over Time report and Long Running History report to show if there are indexes that could have helped make the query run faster.
  • Added a warnings column into the Blocking Over Time report and Long Running History report to show if there are warnings coming from the query plan that could be impacting performance.
  • Added support to the Query Advisor dialog to show missing indexes, or plan warnings, if available.
  • Enterprise Index Review features:
    • Completely redesigned output with modern styling matching the Plan Analyzer — Segoe UI font, colour-coded headings, striped tables, and proper dark mode support
    • All CREATE INDEX and fix scripts now have a Copy button
    • Missing index suggestions now show an impact label — Critical / High / Medium / Low — based on the DMV cost estimate
    • Suggested CREATE INDEX scripts now include the INCLUDE (…) clause when SQL Server recommends included columns
    • A table of contents navigation bar appears at the top of the report with jump links to every section
    • New Analysis Sections
      • Missing Index Overlaps — identifies groups of suggestions on the same table that share the same key columns and could be merged into a single index, reducing index count
      • Index Usage ROI — shows every non-clustered index with its read count, write count, and size since last server restart, and classifies each as Keep, High write ratio, No activity, or Remove candidate
      • Index Fragmentation — lists indexes with >10% fragmentation (100+ pages), colour-coded by severity, with a per-row REBUILD or REORGANIZE fix script
      • Unused Indexes — non-clustered indexes with zero reads since last server restart, sorted by write overhead and size, with DROP INDEX scripts
      • Duplicate & Redundant Indexes — detects indexes whose key columns are identical to or a leading prefix of another index on the same table; excludes clustered indexes
      • Disabled Indexes — lists indexes not being maintained by the engine, with scripts to re-enable or drop
      • Heap Tables — tables with no clustered index, sorted by size
      • Fill Factor Audit — flags non-clustered indexes explicitly set below 99%; the standard is now 99–100%; fix scripts rebuild at FILLFACTOR = 99
      • Missing Foreign Key Indexes — detects FK columns with no supporting index, which cause scans during cascades and parent-table modifications; includes a ready-to-run CREATE INDEX script per FK
  • The Email Alerting feature has received a backend overhaul. Alerts no longer send an email when their threshold has changed, reducing the number of emails that are sent out on alerts like Long Running Queries.

General Maintenance

  • Added 3 indexes to the [DBHealthHistory].[dbo].[waitsNormalized] table to help with performance of monitoring.
  • Cleanup has been added to the MailReportingCheckTracker table.

March 2026 Release – Version 3.1281 Release Notes

Bug Fixes

  • Fixed a bug where the QuickScan report crashed on a brand new SQL Server install where there were not yet 2 SQL Agent log files or 2 SQL Error log files to scan for issues.
  • Fixed a bug in the Track Blocking Queries job with collection of the query plan.
  • Modified Track Blocking Queries job to collect a last submitted batch statement if full query is unavailable due to large transactions.
  • Fixed a bug in QuickScan check #232 that prevented proper reporting on databases missing TDE.
  • Fixed a bug in the “Fragmentation” database index report that could allow index names to be assigned incorrectly.
  • Modified the collection of data for the “Disk Latency by Hour” to more precisely represent an hours exact latency average.
  • Fixed a bug in the query advisor on the “What is Active” Instance Report.
  • Fixed a bug where if you were licensed for 1 instance the title bar showed licensed for “1 instances” added check for proper pluralization if instance or instances.
  • Fixed a regional date formatting issue that caused errors when querying historical data.

New Features

  • SchemaDrift – adding case sensitive and case insensitive comparison.  Previously it was only case sensitive.
  • New Instance Report “Long Running by Hour” that shows a by hour by day visualization of where the longest running queries are.
  • New Instance Report “Long Running History” that shows the longest running queries over the past 30 days.
  • Database level “Long Running History” Historic report has been updated to utilize new information.
  • List displays now have a filter option by right clicking on the desired filter column.

January 2026 Release – Version 3.1262 Release Notes

Bug Fixes

  • Fixed a bug where a disabled index would cause some of the indexing reports to crash.
  • Reduced the frequency of disk space information collected to reduce background load.
  • Fixed a bug in the related links where the link to the Blocking Queries report from the Open Transactions report was not working.  Now it links correctly.
  • Improvement performance on QuickScan check #90 and #233 which were taking a while to check on busy systems.
  • Limiting the length of queries stored in the historic waits to 16k in length to reduce bloat on the waits tables.
  • Fixing the drilldown from Databases by Size to link to the table size for a given database.

New Features

  • Added a right click option on the back button to be able to jump anywhere in the last 20 reports accessed.
  • Added a format SQL button the dialog that is used to show queries.  This is handy to make a query more readable when diagnosing problems.
  • Added output to the bottom left gray status window when updating the historic monitoring database to show the versions being updated to.
  • New QuickScan checks:
    • Right click menu option in the QuickScan report for check #39 (failed mail) and check #104 (new) to clear the failed or retrying messages from msdb.
    • Added new check #101 for too many TempDB files.
    • Added new check #102 for small TempDB files.
    • Added new check #103 for Target Recovery Time settings outside of the recommended range.
    • Added new check #104 for older failed or retry email messages in msdb, with a right click option to purge them. This is intended to be just a cleanup item, not an urgent alert.
    • Added new check #105 for large number of email items in msdb.  How many do you need to save? This is intended to be just a cleanup item, not an urgent alert.
  • Added the column “Transaction Database” in the “Open Transactions” instance report to show what database the open transaction is currently affecting.
  • Added the tracking of the plan associated with blocking queries in our Blocking Query Monitor and blocking query reports.
  • Clicking on a time in the “Deadlocks by Hour” report now takes you to the “Deadlock History” report at either the instance and the database level for that hour.

December 2025 Release – Version 3.1244 Release Notes

Bug Fixes

  • More work done to the TrackDeadlocks procedure to reduce background load.

New Features

  • Added a new instance report, “Structure Change Log”. This report lets you track structural changes made to databases within an instance. It requires Structure Tracking to be enabled to function. When tracking is enabled on a database, a trigger named trg_DDLAudit is created. You can remove this trigger at any time to disable Structure Tracking.
  • Added new instance report “Disk Space Forecast” that gives an estimate of how long a disk will last based on space consumption.
  • Added a menu option to view Webservice API calls that we make to our licensing server, and for crash reports. This was to answer the question of “what data are you extracting from my SQL Server”.  It is sort of boring, but it serves a purpose.
  • Added a right click option to Kill Session in the “Open Transactions” Instance Report.
  • Reports utilizing our timeline chart, such as the “Job History” instance report, have a new sorting functionality. Clicking on a header segment will sort all entries in the timeline based on what is filled in that segment.

October 2025 Release – Version 3.1196 Release Notes

Bug Fixes

  • Fixed a bug where an offline database would cause a crash when running reports against all instances.
  • Various fixes and improvements made to Silent Report Generator.
  • Altered the TrackDeadlocks procedure to reduce background load.
  • Fixed a bug in the heat map reports where clicking in certain coordinates would cause a crash.

New Features

  • Added a new TempDB historic report “TempDB” allocation, which shows users the internal allocation sizes of TempDB’s Version Store, Internal Objects, and User Objects.

October 2025 Release – Version 3.1194 Release Notes

Bug Fixes

  • Fixed a bug where navigating to the Server Health tab with a Server sub tree open would create an “Empty” database in the navigation list.
  • Fixed an issue with heat map reports showing 0’s for future times.
  • Fixed a regional date conversion issue causing the Deadlock History database report to show incorrect time frames.

New Features

  • Added New QuickScan check:
    • QuickScan check #245, TempDB Version Store currently using 80% or more of available space.
  • New Command Line parameters have been added to Database Health Monitor. These can be used to generate report summaries for a SQL Server without having to launch the application. More information about these can be found at https://DatabaseHealth.com/database-health-reports/command-line-parameters/
  • Added drill-down functionality to the “Blocking by Hour” instance report, allowing users to view the specific blocking queries for the selected hour.
  • Added drill-down functionality to the “CPU by Database” instance report, taking users to the Database’s “CPU by Query” report.
  • Added new instance report “Open Transactions” showing any transactions that are left open but may not be active.
  • Index Reports “Inefficient”, “Most Used”, and “Unused” have the option to switch between Real Time and Historic.
  • Hide/Show Copy Only backups option is now available on the “Backup Status” instance report.

See the Release Notes page for details on updates in older versions.

Download Database Health Monitor

Leave a Reply

Your email address will not be published. Required fields are marked *

*

To prove you are not a robot: *