Database Health Monitor 4.1517

Database Health Monitor 4.1517


Database Health Monitor
 and Azure SQL Health Monitor, Version 4.1517

This release adds ninety new reports, a drill-through navigation layer that connects them, actions that carry a fix from one instance to the rest of the estate, and a large pass over silent failures. If you knew the symptom but not the page, or fixed one server and then had to repeat the fix by hand on the other twelve, this release is aimed at you.

Database Health Monitor welcome page
Database Health Monitor‘s welcome page, the starting point for every instance.
  • 90 New Reports
  • 38 New Features
  • 47 Bug Fixes
  • 45 New Chart Shapes

90 New Reports

Three new report suites in Database Health Monitor cover the two system databases and the SSIS catalog that nothing in the product read before, plus thirty-one new plan, workload and resource pages in Azure SQL Health Monitor.

msdb Suite: 22 Reports

Database Health Monitor

  • Agent Activity. Is SQL Server Agent up, how long has it been up, and what is running right now, filtered to the current Agent session, so a job left running by a service restart is not reported as running today.
  • Agent Security. Who owns the automation on this instance, and who can run it.
  • Agent Settings. How Agent itself is configured, and what that is doing to msdb.
  • Alerts and Operators. If something breaks tonight, does anyone hear about it.
  • Backup Ledger. Whether the record of the backups is itself complete, honest and maintainable.
  • Backup Speed. How fast each backup runs, and whether that is changing.
  • Data Collector. Whether the collector is running, and what it has been failing to upload.
  • Growth from Backups. How big each database was, going back as far as msdb does.
  • Job Commands. Every line of T-SQL, command line and script the Agent jobs run, in one place.
  • Job Step Failures. Which step of which job fails, and what it actually says.
  • Missed Runs. What was supposed to run and did not.
  • Subsystem Load. Whether Agent can actually run everything that is scheduled at once.
  • Maintenance Plans. What the plans do, and what they said the last time they ran.
  • Database Mail Setup. Who can send mail from this instance, through which server, and what is configured.
  • Database Mail History. What this instance has tried to send, what happened to it, and how long it took.
  • Mail Content. What this instance is actually putting in the post.
  • Mail Recipients. Who is on the receiving end of this instance.
  • Restore History. What has been restored onto this instance, when, from where, and by whom.
  • msdb Space and Retention. What is filling msdb, how far back it goes, and what trims it.
  • Package Store. The SSIS and DTS packages stored inside msdb itself.
  • Policy Evaluation. Whether Policy Based Management is doing anything here, and what it found.
  • Third Party Objects. What somebody else installed into msdb.
Agent Activity report
Agent Activity
Agent Security report
Agent Security
Agent Settings report
Agent Settings
Alerts and Operators report
Alerts and Operators
Backup Ledger report
Backup Ledger
Backup Speed report
Backup Speed
Data Collector report
Data Collector
Growth from Backups report
Growth from Backups
Job Commands report
Job Commands
Job Step Failures report
Job Step Failures
Missed Runs report
Missed Runs
Subsystem Load report
Subsystem Load
Database Mail Setup report
Database Mail Setup
Database Mail History report
Database Mail History
Mail Content report
Mail Content
Mail Recipients report
Mail Recipients
Restore History report
Restore History
msdb Space and Retention report
msdb Space and Retention
Package Store report
Package Store
Policy Evaluation report
Policy Evaluation
Third Party Objects report
Third Party Objects

master Suite: 16 Reports

Database Health Monitor

  • master Overview. What is in master on this instance, one line per page, and a way into each of them.
  • master Backup and Rebuild Readiness. If this server were gone tomorrow, how much of what is in master could be put back.
  • master Change Ledger. What has changed at server level on this instance, in one list, in order.
  • master Server Permissions. Who holds server level rights that no fixed role gave them.
  • master Server Triggers. Code that runs on every login or every DDL statement on this instance.
  • master Startup Procedures. What runs before anybody connects, and what somebody set as a startup parameter.
  • master Service Facts. What account this instance runs as, how it starts, and whether it has ever been changed.
  • master Endpoints. What can connect to this instance, over what, on which port, and who is allowed.
  • master Credentials. Which outside identities this instance holds, and what uses each one.
  • master Keys and Certificates. What master is protecting, and whether any of it has ever been backed up.
  • master Server Audits. Whether auditing is on, whether it is actually writing, and what it would catch.
  • master Resource Governor. Whether anything on this instance is being capped, and whether the cap is being reached.
  • master Database Properties. Which databases on this instance are set up differently from all the others.
  • master File Map. Every file of every database on this instance, including the databases nobody looks at.
  • master Footprint. How big master is, where it lives, and whether that size is normal.
  • master User Objects. What somebody installed in master, when, and what happens to it when this server is rebuilt.
master Overview report
master Overview
master Backup and Rebuild Readiness report
master Backup and Rebuild Readiness
master Change Ledger report
master Change Ledger
master Server Permissions report
master Server Permissions
master Server Triggers report
master Server Triggers
master Startup Procedures report
master Startup Procedures
master Service Facts report
master Service Facts
master Endpoints report
master Endpoints
master Credentials report
master Credentials
master Keys and Certificates report
master Keys and Certificates
master Database Properties report
master Database Properties
master File Map report
master File Map
master Footprint report
master Footprint
master User Objects report
master User Objects

SSIS Catalog Suite: 20 Reports

Database Health Monitor

  • SSIS Catalog Inventory. What is deployed here, who deployed it, when, and what has never run.
  • SSIS Catalog Health. Why SSISDB is the largest database on the instance, and whether its own maintenance runs.
  • SSIS Who Fills It. One package is writing most of this database. Which one?
  • SSIS Packages Run. What ran, when, and how it ended.
  • SSIS Running Now. What is executing at this moment, and what has been claiming to execute since a restart.
  • SSIS Package Failures. What failed, how often, and with what message.
  • SSIS Reruns and Retries. Which packages only work on the second go.
  • SSIS Package Speed. Is this run slow, or is this package always like that?
  • SSIS Batch Critical Path. The night ends at 05:12, and which package made it so.
  • SSIS Batch Completion Trend. What time the overnight batch actually finishes, and whether that is moving.
  • SSIS Schedule and Concurrency. What runs when, what runs at the same time as what, and what was never scheduled.
  • SSIS Self Contention. Is this package slow because it is slow, or because of what runs beside it?
  • SSIS Inside the Package. Which task inside the package burned the time, and how many times it ran.
  • SSIS Data Flow. How many rows actually moved, along which path, and which component held the line up.
  • SSIS Child Package Map. Which packages call which, derived from what actually ran.
  • SSIS Connection Reach. What this catalog talks to, and what breaks if it goes away.
  • SSIS Environments and Parameters. Which environment supplies what, and which parameter nothing supplies.
  • SSIS Run Time Overrides. Which runs were started with something changed, and what.
  • SSIS Job and Package Disagreement. Which Agent jobs report success on a night the package failed.
  • SSIS Dumps and Legacy Runtime. Two columns every execution carries and no report read.

Instance Level

Database Health Monitor

  • Bottleneck Mix by Database. What kind of problem each database, or each expensive query across the instance, has before anybody decides what to do about it. Every other query page ranks by cost; this one throws the amount out of the position and places each subject in a ternary triangle by how it divides its effort between processor, storage and contention. Databases that are offline, restoring or unreadable by the connected login are named rather than silently dropped, and so is a database with Query Store or wait capture switched off.
  • Deprecated Features, rebuilt as a report class. The old XML grid report is replaced. Descriptions now come from a knowledge table rather than a 267-branch CASE inside the XML, the counts carry a per-day rate against instance uptime instead of a raw cumulative counter, the counters are sampled twice so the page can say whether a feature is still being used right now, and a new locator layer says where each deprecated feature is being used instead of leaving the reader with an instance-wide number and nowhere to go. Statements issued by Database Health Monitor‘s own collector are marked as such.
Deprecated Features report
Deprecated Features, rebuilt as a report class with a per-day rate and a locator layer.

Azure SQL Health Monitor: 31 Reports

  • Missing Index Consolidation. The missing index requests on each table, folded into the fewest indexes that answer all of them, with create / widen in place / already covered decided per index.
  • Key Lookups and Covering Index Candidates. Which indexes send the busiest plans back to the table, which columns they went back for, and where adding columns stops paying for itself.
  • Statistics Behind the Busiest Plans. Which statistics the busiest plans were compiled against, the condition each is in now, and how much of the badly misestimated work depends on it.
  • Plan Survival and How Long Plans Last. How long a plan lasts before the optimizer replaces it, drawn as a survival curve that keeps the plans not yet replaced.
  • Plan Differences and What Changed Inside. What is actually different inside the two plans a statement has been running, operator against operator.
  • Plan Resource Profiles. Two plans for one statement, measured on all eight resources Query Store keeps.
  • Estimate Cascade. Where inside a plan the row count stopped being measured and started being guessed.
  • Residual Predicates and Key Column Order. Which seeks and scans read rows only to throw them away, and which column order would stop it.
  • Live Query Progress and Estimate Overruns. How far through its plan every long running query is, and which operator it is working in.
  • Batch Mode and Columnstore Candidates. Which busy queries are still running one row at a time, and what batch mode would be worth.
  • Cost Drift. Whether each busy statement still costs what it used to per execution, and when that changed.
  • Work Scaling and the Break-Even Between Plans. What one execution costs, priced against how much it was asked to do.
  • Row Width and How Many Fit on a Page. How wide each table’s rows are, and how many the storage engine can fit on a page.
  • Segment Elimination and the Order of the Data. How much of a columnstore index a query has to read, decided by the order the rows arrived in.
  • Session SET Options and Split Compilations. The settings the workload arrived with, and the statements compiled more than once because callers disagreed.
  • Concurrency Footprint and the Worker Allowance. How much of the concurrency allowance each query holds, and how much was held at once.
  • Lock Footprint and Escalation Risk. What each transaction has under lock right now, and how close it is to escalation.
  • Parallel Thread Skew and Idle Workers. Which parallel queries handed nearly all their work to one worker, and which operator did it.
  • Waits by Application, Host and Login. Which application, host and login is doing the waiting, and what each is waiting on.
  • Storage Latency and What Waits for It. How long one read and one write actually take on this database’s files.
  • Transaction Log Space and What Holds Truncation. How much of the log is in use, which part cannot be released, and what is holding it.
  • Resource Rooflines. Which of the service objective’s two allowances is the one standing in front of each query.
  • Service Tier Fit and What Stops You Resizing. Which sizes this database could be on would have carried the workload it already ran.
  • Burst Load and What the Averages Hide. How long each governed resource sat at the ceiling, and how much a five minute average hides.
  • Load Hysteresis and Recovery Lag. Whether a query gets slow when the database gets busy, or stays slow for hours after.
  • Slow Periods and What Runs In Them. The hours this database was slower than usual, and which queries were heavy in exactly those hours.
  • Workload Regimes and When the Mix Changed. Whether this database has been doing the same thing all window, and if not, when it stopped.
  • Workload Shifts. Which time of day each query does its work, and how wide a window it lands in.
  • Workload Turnover. How much of what runs now is code that did not exist when the window opened, and what it costs.
  • Maintenance Windows and the Quiet Hours. Where in the cycle there is a stretch long enough for heavy work, and whether it is quiet every time.
  • Read Offload and What Could Run on a Replica. How much of this database’s work never writes anything, and could run on a read replica.

38 New Features

The theme this release is getting from a finding to the next step without leaving the product: a shared drill-through layer, actions that run the change, and a guided path for someone who knows the symptom but not the page.

Navigation and Drill-Through

  • Drill-through navigation across the product. A shared catalog of drill targets and a typed focus token (database, table, index, query, session, job, login, drive, wait type) means a row on one page can open the page that explains it, already filtered to the thing the row named. Reached from a new Go to group on the right click menu.
  • Right click menus on the reports that had none. A new list view base adds report-specific items to the right click menu without a second menu appearing on top of the built-in copy and filter items. Added to Backup Status, Database by Size, Failed Jobs, Job History, Large Tables, Logins, Memory Grants, TDE Status, Suspect Pages, Buffer Pool by Object, Index Contention, Table Use, Table Space Breakdown, Unused Indexes and others.
  • Session follow-through on the live pages. Sessions, Connections, Open Transactions, Blocking Tree and What Is Active share one landing routine, so a session followed from one page lands the same way on the next, with reuse of a closed session’s id detected rather than reported as the same session.
  • Error log entries lead somewhere. The classifier now reads the database, login and drive out of the fixed wording SQL Server uses, and offers them on the Go to menu. An entry that matches none of it offers nothing rather than a guess.
  • Related links rebuilt. The related-links panel is driven from an expanded catalog rather than a hardcoded list, and is covered by its own tests.
  • Ctrl+Left and Ctrl+Right walk one list. The two hand written Select Case chains behind the instance report arrows are replaced by a single ordered list, so both directions are read off the same order and a report cannot be reachable from one side only.
  • Go Back history improvements across report, database and instance navigation.
Sessions report
Sessions
Connections report
Connections
Open Transactions report
Open Transactions
Blocking Tree report
Blocking Tree
What Is Active report
What Is Active
Error Log report
Error Log

The five live session pages now share one landing routine; the Error Log page reads the database, login and drive out of each entry and offers them on the Go to menu.

Actions: Running the Fix, Not Just Scripting It

  • Run on other instances. A change that just succeeded on one instance can be run on the other connected instances, with a read-only check per instance first that says whether it already has the change. The three database loops now quote with QUOTENAME, and cost threshold counts as set at 50 or more so a server deliberately raised to 75 is left alone.
  • DBCC CHECKDB queue. Runs CHECKDB over every overdue database on an instance, one database at a time, instead of opening the single-database dialog once per database.
  • Agent job actions. Start, stop and enable a job from the Failed Jobs and Job History pages, with the pending-request state (asked to start, not yet begun) reported as itself rather than as running or idle.
  • File growth advisor. Set a file’s autogrowth to a fixed size, or grow it now, from the Files and File Utilization menus. A grow that would leave a volume below its free-space floor is refused.
  • Update Statistics window. Runs UPDATE STATISTICS for the rows selected on the Index Statistics report, rather than scripting a whole database of statistics.
  • Log chain follow-up. After switching a database between SIMPLE and FULL on Backup Status, the page now says what is left undone: the log keeps clearing until a full backup is taken, and the Agent job steps that can no longer back up that log are listed.
  • Quick Scan instance fixes moved into a shared module so the report and Run on other instances run the same statements.
  • Open in SSMS. Opens SQL Server Management Studio on the instance the report is showing, in the database the row names, with the page’s script already loaded. A Settings tab finds the installed copies, or takes an explicit path.
Quick Scan report
Quick Scan, now sharing the same fix module as Run on other instances.

Guidance and First Run

  • Guide Me. A guided track for someone who knows the symptom but not the page: a strip pinned to the right of the main window opens one page at a time and says what to look at on it. Tracks are defined in data, and progress is remembered.
  • Rail help panel. Replaces the fixed help text box with a panel sized to what it holds, and replaces the Select Case in MainForm that knew about six timer modes with per-page help text for the whole product.
  • Loading messages. A pool of lines shown while the product is waiting on a server, instead of a bare progress bar.

Historic Monitoring

  • Historic options dialog. One place for the history database settings that were previously spread across several dialogs.
  • Historic database rebuild. A supervised rebuild of the history database with a per-step ledger (ok, skipped, failed), a confirmation that names what will be dropped, and a verification pass that reads back what the rebuild was supposed to leave behind. A rebuild that threw nothing is not assumed to have worked.
  • Databases with history that are no longer on the instance are listed rather than left invisible.
Historic Overview report
Historic Overview, backed by the rebuilt history database with its own per-step ledger.

Deadlocks

  • Deadlock Advisor rebuilt. A new shredder reads the whole deadlock graph rather than stopping after the first lock, a classifier names the pattern, and a graph view draws the resources and the waits between them.
  • T-SQL coloring. The two statements at the center of a deadlock are now colored T-SQL in a fixed-width font instead of bare text boxes in the dialog’s proportional font.
  • Deadlock history and objects pages updated to the same shredder, so every deadlock page agrees about what a graph contains.
Deadlock History report
Deadlock History
Deadlock Objects report
Deadlock Objects
Deadlocks by Database report
Deadlocks by Database

Interface

  • Toast notifications. Non-blocking status messages in three levels, replacing message boxes raised off the UI thread for results that only need to be seen once.
  • Themed confirmation dialogs. A shared confirm dialog with named buttons (“Delete 12 entries” / “Keep”) and question, warning and danger treatments, replacing MessageBox.Show Yes/No prompts across the alerting log, replication, Query Store enablement, and elsewhere.
  • Every Designer dialog refitted onto one base class: one baseline font and scale, consistent padding and button order, and AcceptButton / CancelButton set so Enter and Esc always do something. Around 40 dialogs.
  • Color palette work. A rewritten color helper with a chart palette that returns a distinct color per series offset, tested against color blind mode and greyscale.
  • Index Review rebuilt. The single 1,450-line control is split into a model, grid, table view, script pane, theme and writers, with a new Missing Indexes page grouped by table: the table list on top with size, write volume and total benefit, and tabs beneath for suggested indexes with a CREATE INDEX script each, the table’s columns, and the indexes it already has.
  • New chart shapes. Bottleneck ternary chart, deprecation Pareto, backup size trend, historic waits columns, msdb rank bars and time lanes, SSIS run lanes, rank bars and clock trend in Database Health Monitor; 31 new chart controls in Azure SQL Health Monitor, including survival curves, Hasse diagrams, bipartite plans-to-statistics plots, Mekko, roofline, orbit, Lorenz and phase dial.
Missing Indexes report
The rebuilt Missing Indexes page, grouped by table with a CREATE INDEX script per suggestion.

Platform and Packaging

  • Optional encryption in the connect dialog. Two new choices, Optional and Optional, trust the server certificate, for servers that offer encryption but do not require it. Saved connection strings stay readable by older versions: the words written are only ones System.Data.SqlClient accepts, and the Optional keyword Microsoft.Data.SqlClient needs is added in memory as each connection opens.
  • Crash reporting. Unhandled exceptions, unobserved task faults and background worker failures now reach the crash report endpoint with the full exception, its inner exceptions and the stack from the line that threw, deduplicated by exception type and throwing frame so one repainting bug does not file a report per frame. StedmanCore reports through a hook set by the application, so reports carry the application’s version rather than the library’s.
  • MSChart is no longer redistributed. The remaining MSChart-based charts were rewritten on the product’s own drawing code, and the MSChart redistributable is removed from the installer.
  • Licensing and update checks moved to the V4 web service in both Database Health Monitor and Azure SQL Health Monitor.
  • SQL Server build numbers updated for 2017, 2019, 2022 and 2025.
  • Settings dialog gains the SSMS path tab and additional options, with tab indexes preserved for callers that open a specific tab.
  • Single-instance mode for support captures. Crash sweep and demo recording can be limited to one instance, so a settings file holding every server ever connected does not cost a connection attempt per server.
  • Migrated to Microsoft.Data.SqlClient with the driver selectable, and NuGet package references refreshed across the solution.

47 Bug Fixes

A large share of this release is failures that used to happen quietly: a worker that stopped with nothing written down, a page that drew an empty answer, a Catch that sent a bare message and lost the line that threw.

Crashes and Exceptions

  • Blocking Monitor threw on an empty interval box. The interval was parsed straight off the text box, and the box empties itself whenever its own parse fails, so pressing a letter and then Start Monitoring threw FormatException. A “0” parsed fine and then hit ArgumentException from the timer. Neither had a Catch anywhere on the path.
  • Blocking Monitor threw ArgumentOutOfRangeException when opened before any instance had been connected.
  • The server tree lookup threw a NullReferenceException whenever the instance was no longer in the tree, and again inside the Catch that was meant to handle it. It also left a flag set, which swallowed the user’s next click.
  • Clicking during a tree rebuild threw. Tree loading pumps messages while it rebuilds, and a click that landed in that window threw.
  • Historic Query Waits Advisor threw IndexOutOfRangeException past the last time slot.
  • The server health report threw on an empty object name before the first test could be made, and threw into the outer Catch instead of skipping the object.
  • Startup subtree loading threw for every offline instance on an implicit conversion of an empty value to Double.
  • Index LOB Columns and related pages replaced themselves with “The report being run appears to have crashed” because the database was not set before the page was built.
  • Statistics and Table Size advisors reported faults from the UI thread, with a stack starting at the Catch rather than the line that threw, and without the exception type.
  • Incremental Shrink advisor reported server messages and code faults through the same path, so a real fault was indistinguishable from a server response.
  • Word automation failures are caught rather than taking the export down with them.
  • Unobserved task exceptions are now trapped. .NET 4.8 drops them silently, so these failures previously left no trace at all.

Silent Failures and Empty Pages

  • The quiet auto-refresh path on the live pages threw the exception away. Sessions, Connections, Open Transactions, Blocking Tree and What Is Active each had a quiet reload that discarded any failure without writing anything, so a server that had gone away simply stopped updating. A connection failure inside a countdown threw with no message, no log line and no change on screen.
  • The Database Overview worker stopped silently on a null read, so the page came back partly built with nothing said about why.
  • A Catch on the Database Overview page returned early, which skipped hiding the progress bar and starting the refresh timer.
  • An unmatched branch on the Database Overview page drew nothing, leaving the reader on the page they were already on with no indication anything had happened.
  • The Technical Debt scan lost its worker’s error. The failure went into e.Error with nothing reading it, so there was no log entry and no rows.
  • Technical Debt now counts and reports encrypted modules rather than skipping them silently.
  • Quick Scan showed ex.Message in a message box and nothing else for each of its checks, not even a log line, so nothing was ever filed. Its Catch also appended “Historic monitoring must be enabled” to every failure regardless of cause.
  • Instance Problem Indexes skipped the refresh timer because it constructed the report class directly.
  • Menu items that could not resolve their target did nothing. They now open the picker with nothing bound, or log the reason, rather than silently ignoring the click.
  • Report failures inside DatabaseHealthComponents were invisible to the crash reporter: a section that threw showed red text, and a worker that threw showed a status line, and neither was reported.
  • A failure during a silent report run had nowhere to go and was discarded; it is now written down.
Technical Debt report
Technical Debt, which now writes down what its own scan failed on instead of losing the error.

Wrong Answers

  • Deprecated Features printed blank descriptions for the rows that mattered most. The description CASE used the collapsed documentation label for compatibility level, so six counters on SQL Server 2019 and seven on 2022 came back NULL; Database Mirroring missed the same way. Twenty more branches matched no counter published by any supported version. The counts also had no denominator, so a count of 3 on a server up for 400 days and one up for ten minutes looked identical.
  • The Failover Compatibility report drew an empty chart and a toolbar of dead controls on an instance that is in no availability group. It now says so in a message, and reads the replicas before building anything.
  • The deadlock query threw away every lock after the first, and used four separate OUTER APPLY nodes() calls that could not be lined up with one another.
  • Quick Scan instance fixes failed on database names containing ]. The names were bracketed by hand, so ALTER DATABASE failed to parse (Msg 156) and that database kept its setting while the rest changed.
  • An inner join dropped endpoints with no TCP row, and dropped job history rows whose job had been deleted.
  • A chart with more series than the palette had entries gave every series the same color, because the palette ignored the offset it was passed and returned black.
  • An SSIS query counting executions against seven days of job history reported three weeks of packages as if they were in the window.
  • A time range derived from marks alone drew a single mark as the whole of time.
  • A chart segment was found by walking the hit test downward, which arrived at the wrong column.
  • A deprecation locator reported line 1 for every module that matched only the second alternative of the pattern.
  • Databases the connected login cannot enter are reported as rows rather than failing the whole estate-wide scan, which is the failure that silently dropped one database out of a scan.
  • A query using syntax added in SQL Server 2017 or 2022 would fail the batch at compile time on every older instance, which no TRY/CATCH can rescue.
  • Large Tables opened the wrong drill target (expanding the table’s database instead of the Disk Space report for the instance).
  • Job History opened the whole list instead of the job that was picked.
  • The Waits Advisor was reachable only by double click.

Connections and History

  • The historic upgrader failed on a clean database. A version step was missing, and the waits index script ran at a version some databases had already passed; the index creation moved to a later step and a duplicate index definition was removed.
  • Testing the history connection could replace the application-wide shared connection with a failed one, and left a Pooling=false connection open from a previous run.
  • Overview workers left a reader open on the shared connection, failing the next stage with a second-DataReader error when a load was cancelled early.
  • Dropped and refused connection errors were reported as dropped connections regardless of cause, so a server refusing the query read the same as a network drop.
  • A connection kept by one step was dropped by the next, leaving the page to reconnect for work it already had a connection for.
  • The historic waits report is released when the history database is replaced, so its date range, drill path and filters do not describe rows that no longer exist.
  • Historic monitoring alert and tracking procedures corrected for long running queries, blocking queries on both SQL 2016+ and older builds, CPU snapshots, and the DBCC CHECKDB alert.

The throughline: ninety pages give you somewhere new to look, the drill-through layer gets you there from the row that raised the question, and the actions let you fix what you find and push the same fix to every other instance without leaving the product. The bug fix list is mostly the same idea turned inward: a failure that used to end in silence now ends in a message, a log line, or a report.


Database Health Monitor and Azure SQL Health Monitor 4.1517 is available now. Existing Version 4 users can upgrade in place; registered servers, settings and DBHealthHistory data all carry forward.

Leave a Reply

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

*

To prove you are not a robot: *