Disk Space Forecast
Overview
The Disk Space Forecast report answers two questions at once: which volume runs out first, and how much that answer is worth.
The second half is the part that matters. A forecast without an error band is a guess with a decimal point on it. This report gives you a range – “full in 8 to 17 days” – along with the fit quality and the number of days it was fitted from, so you can tell a confident prediction from a shrug.
Volumes are ranked by urgency, so the one with three days left is at the top rather than wherever the alphabet put it.
What this fixes
The old report fitted a least-squares line through every disk space sample the history database had ever collected, solved for zero, and printed a date. Four things were wrong with that:
- No interval, no goodness of fit, no sample count. A volume with four hundred clean daily samples and one with five noisy ones produced dates that looked exactly as certain as each other.
- The window was the whole table. The date filter in the query was commented out and the two parameters meant to control it were never read – so a volume cleaned up a year ago and flat ever since still carried the old downward slope and kept predicting a run-out date that never arrived.
- Nothing was ranked. One 350-pixel chart per volume in alphabetical order, down a scrolling panel. The volume with three days left sat in the same grey box as the volume with three years, and might well have been below the fold.
- A flat volume, a growing volume and a volume with no data all rendered as
N/A– three different answers shown as the same non-answer.


Where to find it
An instance-level historic report. Right-click the server in the tree and open Instance Reports → Disk Space Forecast. The page title reads Disk Space Forecast for <server name>.
Reading the chart
The projection is drawn as a fan, not a line, because the honest shape of a forecast widens as it goes forward. The narrow end is now, where the data is; the wide end is the future, where it is not.
The fan is drawn in two shades – the 50% and the 80% prediction interval. The inner band is where the answer most likely sits; the outer band is the range the grid’s 80% range column reports. Measured history is drawn solid, so you can always see how much real data the projection is standing on.
A volume whose samples are clean and consistent gets a narrow fan and a tight range. A volume whose free space jumps around gets a wide one – and that width is the finding. It tells you the date you are about to act on is soft.
Two shapes are available from the toolbar:
| Shape | What it draws |
|---|---|
| Runway | Every volume on one axis, ranked by urgency. The default, and the one that answers “which first?”. |
| Trend | A small fan chart per volume, so you can see each one’s actual history and slope. |
The verdicts
Every volume gets one of six verdicts. Three of them are not dates, and that is deliberate – “I cannot tell you” is a real answer and used to be hidden behind N/A.
| Verdict | Meaning |
|---|---|
| critical | Filling, and out of room inside a week. |
| warning | Filling, out of room inside a month. |
| watch | Filling, out of room inside a quarter. |
| filling slowly | Filling, but far enough out not to be this quarter’s problem. |
| not filling | Free space is flat or rising over the window. There is no date, and that is the answer. |
| unknown | Not enough samples in the window to fit anything. Also an answer. |
A volume needs at least four daily points in the window before anything is fitted. Below that it reports unknown rather than drawing a line through noise.
A central estimate landing more than five years out is reported as not filling rather than given a date nobody would act on.
Reading the grid

| Column | What it is |
|---|---|
| Drive | The volume. |
| Free | Free space now. |
| Change/day | MB per day, negative when the volume is filling. |
| Days to full | The central estimate. |
| 80% range | The interval around it – the honest version of the answer. |
| Verdict | One of the six above. |
| R² | How well the line fits the data. This is the trust column. |
| Days sampled | How many daily points went into the fit. |
| First reading · Last reading | The span the fit covers. |
R² and Days sampled are the two columns that qualify everything else on the row. A tight range from four points is not the same claim as a tight range from ninety.
The toolbar
| Group | Buttons |
|---|---|
| Window | 7 days · 30 days · 90 days |
| Shape | Runway · Trend |
Refresh |
The window does two jobs at once: it bounds the query, and it decides what counts as current behaviour. A volume that was cleaned up two months ago will still look like it is filling on a 90-day window and correctly flat on a 7-day one. If a forecast disagrees with what you know happened, change the window before believing it.
Both the window and the shape are remembered between sessions.
Requirements
This is a historic report. It reads the DiskSpace table in the DBHealthHistory repository, populated by the Database Health Monitor collection process. Without collection configured, there is nothing to forecast from.
Because it reads history rather than the live instance, it works when the monitored server is unavailable.
How the numbers are worked out
The report takes a daily low water mark per volume over the window rather than raw samples. That does two things in one move: it bounds the query, and it drops the intra-day sawtooth that raw samples carry. The daily minimum is the number that matters anyway – it is the worst the volume got that day.
A least-squares line is fitted through those daily points, and the fit keeps its own residual standard error, which is what makes the interval possible. The 80% range is that error carried forward to where the line crosses zero.
A limitation this page states rather than hides
The history DiskSpace table holds logTime, drive and MB_Free – the instance column (iMonitorID) was dropped in history database upgrade 1253.
There is no instance column left to group by. On a history database collecting from more than one server, C: from two machines merges into one series and one regression.
Both readers of that table have this problem. This one puts it in the footer rather than letting you read a merged forecast as a single machine’s.
If your history database serves several instances, treat a volume letter that exists on more than one of them as unreliable here.
How to read the report
- Read the top of the ranking, not the whole page. It is sorted by urgency for a reason.
- Read the range, not the date. “8 to 17 days” is the answer; the midpoint is just where it happens to sit.
- Check R² and Days sampled before acting. A confident-looking date from five noisy points is not a plan.
- Look at the fan width. A wide fan is telling you the same thing the R² column is, visually.
- If something looks wrong, change the window. Most surprising forecasts are a cleanup event sitting inside a long window.
- Do not ignore “not filling”. It is a positive finding, not a missing one.
Common patterns
Critical on a volume that was fine last month. Something started growing. File Utilization and Large Tables will say what.
A wide range and a low R². Free space is moving irregularly – often a volume shared with backups or a log drive with a retention job on it. The forecast is honest about not being able to help much.
Not filling, but very little free space. Stable and tight. No date to give, but no headroom either. This is a capacity conversation rather than an urgent one.
A volume that reports unknown. Fewer than four daily points in the window. Either collection is new, or it has gaps. Widen the window.
Two volumes with the same letter behaving strangely. See the limitation above – this is the merged-instance case.
Related reports
| Report | Why you would go there |
|---|---|
| Disk Space | What the volumes look like right now. |
| File Utilization | Whether the database files on that volume have room inside them. |
| Large Tables | What is consuming the space that is running out. |
| Files for Database | Growth settings on the files doing the growing. |
Frequently asked questions
Why a range instead of a date? Because the underlying fit has an error term, and hiding it makes a weak prediction look like a strong one. The range is the same forecast, honestly reported.
What is a good R²? Close to 1 means the volume is filling steadily and the line describes it well. Low values mean free space is moving irregularly and the date is soft. There is no threshold that makes a forecast true – read it together with the sample count.
Why does a volume say “not filling” when I know it is? Over the selected window it is flat or rising. Try a longer window. If it only fills during month-end processing, a 7-day window will often miss it.
Why did the forecast change so much after I switched windows? Because the window decides what counts as current behaviour. That sensitivity is real information – it means the volume’s growth rate is not constant.
Why is there no per-instance breakdown? The instance column was dropped from the history table in upgrade 1253. See the limitation section – the report states this rather than quietly merging.
Is five years the longest it will predict? That is the cutoff. Past it, the arithmetic still works but the answer is not a forecast, so it is reported as not filling instead.