SQL Server Health Monitor
Agentless monitoring for SQL Server — wait statistics, blocking, indexes, backups and alerting. This documentation explains what the application measures and how to run it.
Help
Getting started
Monitoring
Wait statisticsWait statistics show where SQL Server spends its time when it isn't computing. They are the fastest way to narrow down a bottleneck: instead of guessing, you see directly whether a…
Queries & analysisThis area helps you find and understand expensive or unusual queries.
Plan regressionsA query that took 40 ms yesterday and takes 400 ms today has usually not changed — it got a different execution plan. Query Store keeps that history on the monitored instance: per…
Blocking & deadlocksBlocking happens when one transaction holds a lock another one needs. Brief blocking is normal; long blocking is a common reason for "the application hangs".
Index healthThe Performance → Index Health and Missing Indexes areas help you find indexes that slow things down – fragmented, unused, duplicate and missing.
StorageThe storage area monitors file sizes, free space and log usage – the most common causes of sudden outages ("database full", "log filling up").
TempDBtempdb is the whole instance's shared scratch database: temporary tables, sorts, hash joins, the version store. Because everyone shares it, it quickly becomes a bottleneck.
SQL Agent JobsThis page reads the state and history of SQL Server Agent jobs from msdb.dbo.sysjobs and sysjobhistory – the scheduled tasks like backups, index maintenance or ETL.
Error logThe Error log page reads the SQL Server error log — and, on the same page, the SQL Server Agent log — straight from the monitored instance. Nothing is copied into the monitoring…
BackupsThe Backups page answers one question per database: if this server died right now, how much committed work would be lost, and could it be restored at all?
Login activityThe Login activity page answers two questions: how much data is each login being handed, and is that unusual for that login at this hour of the week.
Change TimelineThe Changes page answers the first question asked in any incident: what changed?
Alerting
Alerts & hysteresisAlerts fire when a metric breaches a threshold. To keep them reliable rather than noisy, the monitor has several mechanisms.
Baselines & N-sigmaFixed thresholds rarely fit every hour: 60 % CPU is normal on Monday morning but suspicious at 3 a.m. on Sunday. Baselines solve this by learning each server's normal behaviour.
Notification channelsChannels decide where alerts go. They are stored encrypted in the database (not in appsettings) so credentials stay protected.
Reporting
Reports & capacityThe reporting area condenses history into analyses and forecasts.
License OptimizationThe report under Reports → License Optimization answers a question conventional monitoring software never asks: are you paying for a SQL Server edition you do not actually need?
Operations
Backup & keysTwo things must be in your backup plan: the monitor's database and the encryption key. Without the key, stored connection strings and notification secrets become unreadable.
TroubleshootingShort answers to common situations.
Operations
Install & deploy
Overview & first runThis folder contains the runbooks for operators deploying and maintaining SQL Server Health Monitor. They assume you already have the installer / Docker image and just want to know…
DeploymentThe app ships as either a published .NET 9 binary (Windows or Linux) or a Docker image. Pick one path.
MSI installerA Windows Installer package that deploys SQL Server Health Monitor and registers it as a Windows service. Authored with WiX v5; the sources live in installer/ (Package.wxs +…
DockerSQL Server Health Monitor ships as a plain ASP.NET Core web app, so it runs well in a Linux container. On Linux the UseWindowsService() call is a no-op — the app is a normal…
Run & maintain
UpgradeIn-place upgrade procedure for a single-host install. Multi-instance setups (load balancer in front, two app hosts) are out of scope for this doc — flag that and we'll write it.
Backup & restoreThe two-sentence summary: back up the monitoring database, and — if you set your own Encryption:Key — back up that key with it. The database holds everything the product knows; the…
LicenseThe product ships with an RSA-signed license file (license.lic). The vendor holds the private key; the application bundles only the public key and verifies the signature on every…
Single sign-onSQL Server Health Monitor supports OpenID Connect SSO alongside local username/password auth. The two are not mutually exclusive — local accounts keep working as a break-glass path…
Change tracking & licence advisorTwo features that need a word of setup beyond the default VIEW SERVER STATE grant. Both are on by default and both degrade gracefully — if a permission is missing, the affected…
TroubleshootingCommon failure modes and what to do. If you hit one not listed, capture /health/detailed output plus the last 200 log lines and open a support ticket.