SSIS Critical Path
Overview
The night ends at 05:12. Which package made it so?
The SSIS Package Speed page ranks packages by how long they take. This one ranks them by how much their duration costs, which is a different order and usually a surprising one.
A package that takes forty minutes beside an hour of other work is worth nothing to tune. The ninety second one that everything else waits on is worth all of it.
Where to find it
Expand a server in the tree, expand a database holding an Integration Services catalog, then SSIS → Critical Path.
How the chain is found
Walking backwards from the last finish:
- Take the execution that ended the night.
- Take the one whose finish most closely precedes its start.
- Repeat.
Everything on that chain is drawn solid. Everything that ran beside it is drawn pale, because shortening any of it moves nothing.
The honesty this page needs
SSIS does not record that B waited for A.
| Where | What is true |
|---|---|
| Inside one execution | The order is real, because catalog.executable_statistics wrote it down. |
| Across separate executions | The dependency is inferred from the gap, and a gap is not always a dependency. |
Two packages half an hour apart on a schedule look exactly like a chain and are not one, which is why the gap is shown on every link rather than hidden behind the conclusion.
The same sentence is in the page’s own caveat line.
Reading the grid
| Column | What it is |
|---|---|
| Order | Position in the chain, counting back from the end of the night. |
| Package | The package. |
| Started / Finished | Its own times. |
| Ran for | Its duration. |
| Worth | How much earlier the night would have ended if this package had taken no time at all. This is the column to sort by. |
| Gap after | The gap between this finish and the next start. A large gap is a weak link. |
| Link | Whether the link is real (inside one execution) or inferred (across executions). |
| Status | How the run ended. |
The toolbar
| Control | Options | Default |
|---|---|---|
| Night | Last night, 2 back, 3 back, A week back | Last night |
| Completion trend | Opens SSIS Completion Trend. | |
| Recent runs | Opens SSIS Packages Run. |
What counts as a night
A thirty hour window ending at midday, not a calendar day, which is the same definition SSIS Completion Trend uses.
A batch that starts at 22:00 and ends at 04:00 belongs to one night and falls either side of midnight, and grouping by date would cut it in half and report two.
Where the data comes from
| Source | What it gives |
|---|---|
catalog.executions |
Start, end and status per execution, which is what the backwards walk reads. |
catalog.executable_statistics |
The real order inside one execution. |
catalog.catalog_properties |
The retention window, which bounds how far back the toolbar can go. |
Related reports
| Report | Why you would go there |
|---|---|
| SSIS Completion Trend | Whether the end of the night is drifting later month on month. |
| SSIS Package Speed | Whether the package on the chain is unusually slow or always like that. |
| SSIS Inside the Package | Which task inside the expensive link burned the time. |
| SSIS Schedule | Whether the gaps on this chain are a schedule rather than a dependency. |
| SSIS Self Contention | Whether a link is slow because of what runs beside it. |
Frequently asked questions
The longest package is not on the critical path. That is the point of the page. It ran beside other work and finished before the thing that actually ended the night, so tuning it moves nothing.
A link shows a two hour gap. Then it is probably not a dependency at all, it is a schedule. The page shows you the gap rather than hiding it, so you can decide.
Is the chain guaranteed correct? Inside one execution, yes. Across executions it is inferred, and the Link column says which kind each one is.
The Worth column is small for everything. Then the night is not a chain, it is a schedule with slack in it, and the way to move the end of the night is to move the start times rather than to tune anything.