Keyboard and Command Palette
Overview
There are over a hundred reports in Database Health Monitor, spread across an instance menu, a database tree and three folders inside it. Finding one by expanding nodes works and is slow.
This page is the fast way round the same product:
| You want | Press |
|---|---|
| Any report, on any connected instance, by name | Ctrl+K |
| Help for the page you are looking at | F1 |
| The next or previous instance report | Ctrl+Right, Ctrl+Left |
| The same report on the next or previous instance | Ctrl+PageDown, Ctrl+PageUp |
| Back where you were | Backspace |
| Run the report again | F5 |
Where to find it
Not a report, so there is nothing in the tree to open. Ctrl+K opens the command palette from anywhere in the application, and the search box above the server tree does the same thing with the mouse.
Everything else on this page is a keystroke rather than a place.
The command palette
Ctrl+K opens a search box over the middle of the window. It works on the empty start page as well as on a loaded report, because finding a report is the thing you need before you have one open.
What it searches
| Group | What is in it |
|---|---|
| Recent | The pages this session has already been on, up to eight, shown before you type anything |
| Reports | Every report on every connected instance, and every report in every database whose subtree has been expanded |
| Matched on DMV | Reports that read the dynamic management view you typed |
| Actions | Every command on the menu bar, named by the trail that leads to it, such as Display, Dark Mode |
The Matched on DMV group is the one worth knowing about. Type dm_db_index_usage_stats and you get the reports that read it, without knowing what any of them are called. It works because the documentation for each report lists the views it reads, and the palette searches that list.
The actions group is read off the menu bar itself rather than from a list kept beside it, so anything the menus can do the palette can do.
What it does not search
A database whose subtree has never been expanded contributes nothing. The palette reads the tree that has already been built rather than connecting to every database to ask what it holds. Expand a database once and its reports are in the palette from then on.
How results are ranked
Best match first, and a match on the title always beats a match on the description:
- The title starts with what you typed.
- A word in the title starts with it.
- The title contains it.
- The title contains its letters in order, with gaps.
- A keyword matches.
- The description matches.
Then, between matches that scored the same, anything on the instance you are working on comes first, and within that, anything in the database you are working on. Typing waits with an instance open offers that instance’s Waits report ahead of the same report on the other four servers you have connected.
Up to forty results are shown. Past that the query is the thing to fix.
Keys
| Key | What it does |
|---|---|
| Up and Down | Move through the results |
| Enter | Open the selected result |
| Ctrl+Enter | Open it in a new tab, without leaving the page you are on |
| Esc | Dismiss |
Clicking elsewhere also dismisses it. The matched characters in each row are drawn in bold, so it is clear why a result is in the list.
Help
F1 opens the help for whatever page is on screen. So does the book icon in the top right corner of the window.
Help is looked for in two places, in order:
- DatabaseHealth.chm, installed next to the executable. This is the whole manual, offline, with a contents tree, a keyword index and full text search.
- databasehealth.com, if the help file is not installed, or has no topic for that page.
The fallback means help always opens. A machine with no help file behaves exactly the way the product did before the help file existed.
The help file and this documentation are built from the same source in the same run, so the page F1 opens is the page you are reading here.
Some panels also carry their own Website: links, on findings that have a page explaining them. Those always go to the site rather than to the help file, because they explain a SQL Server problem rather than a Database Health Monitor page.
Moving between reports
The report arrows
Ctrl+Right and Ctrl+Left step through the instance level reports in order, without going back to the menu. It is the fast way to see everything about an instance: open the first report and hold Ctrl and Right.
The order is a deliberate sequence rather than alphabetical. Related pages sit next to each other, so TempDB Metadata Contention is beside TempDB Consumers, and both are near Waits, which is where somebody notices the problem in the first place.
The instance arrows
Ctrl+PageDown and Ctrl+PageUp keep the report and change the instance. Ctrl+Down and Ctrl+Up do the same thing, for keyboards without page keys.
This is the answer to “is it just this server?”. Open Backup Status, then hold Ctrl and Page Down: the same report, on each of your servers in turn.
Both pairs work on instance level reports. A database level report has no instance to jump to and no place in the instance order, so on one of those the arrows do nothing.
Back
Backspace goes back, the same as the back button. It is ignored while you are typing in a box, so the backspace key still deletes characters in the Schema Search and VLF pages, and in any search or filter box.
Reload
F5 runs the current report again. Every page supports it, including the Server Overview, the Database Overview and the Performance Dashboard.
Tabs
A report can be pinned to a tab strip and kept there while you work on something else.
| Key | What it does |
|---|---|
| Ctrl+Shift+T | Pin the report on screen as a tab |
| Ctrl+Enter in the palette | Open a report in a new tab without visiting it first |
| Ctrl+Tab | Next tab |
| Ctrl+Shift+Tab | Previous tab |
| Ctrl+1 to Ctrl+9 | Go straight to that tab |
| Ctrl+W | Close the current tab |
Tabs are remembered across a restart, so an investigation left open on Friday is still open on Monday.
Cycling is on Tab rather than on the arrow keys because Ctrl with every arrow is already taken by the report and instance shortcuts above.
Related links
Many reports carry a strip of related links across the top of the page: the other reports that answer the neighboring question. They are curated per report rather than generated, so the list on Missing Indexes is the pages a person looking at missing indexes actually wants next. A report with nothing worth linking to shows no strip at all.
Messages you may see
Nothing matched. The palette says so rather than going blank. Try fewer characters, or a DMV name.
Frequently asked questions
Ctrl+K does nothing. It is unconditional and works with no instance connected, so if nothing happens the keyboard focus is in another window. Click once on the main window.
A shortcut only works on the second press. That was a real defect, fixed. A report that took the keyboard focus with it when it closed left the shortcuts inert until something on the new page was clicked. The focus is now put back at the end of every navigation.
Why does Ctrl+Right do nothing on this page? It is a database level report, or an overview page. The report arrows walk the instance level order and there is no position in it for a page that belongs to one database.
The palette cannot find a report I know exists. Its database has probably never been expanded in the tree. Expand it once and the palette has it.
Can I change the shortcuts? No, they are fixed.
Does F1 need an internet connection? No, when the help file is installed. It only reaches the website when the help file is missing or has no topic for the page.