SSIS Data Flow
Overview
The strongest single finding available anywhere in SSISDB is on this page: a path whose rows went to zero while the package still reported success.
A source query that was truncated, a filter that no longer matches, a file that arrived empty. All of them look like a clean green run on every other page in this product and on every page of the reports shipped with SQL Server. Here they are a line hitting the axis.
Where to find it
Expand a server in the tree, expand a database holding an Integration Services catalog, then SSIS → Data Flow.
The logging levels this page needs
The catalog does not write this data by default, and the page says so rather than drawing an empty chart.
| What | Where | Written at |
|---|---|---|
| Row counts | catalog.execution_data_statistics |
Verbose only. |
| Component phase times | catalog.execution_component_phases |
Performance and above. |
SSIS Overrides is where a logging level raised for an investigation and left there shows up, and SSIS Who Fills It is what that costs.
Two traps this page is built around
One row per buffer, not one per run
execution_data_statistics writes one row per buffer. A path that moved a million rows in hundred thousand row buffers has ten rows, each saying 100000, and reading any one of them gives a tenth of the answer.
Everything here sums per path per execution first.
The same rows are counted again at every path
A source feeding a transform feeding a destination writes one buffer under three path names.
So this page reports per path rather than per package, and never adds the paths of one data flow together. That is also why SSIS Package Speed takes the widest single path rather than the sum.
The two views
| View | What each row is |
|---|---|
| Rows moved | One row per data flow path: where the rows came from, where they went, and how many there were. |
| Component time | One row per component: how long it held the buffer, and in which phase. |
Reading the grid
Rows moved
| Column | What it is |
|---|---|
| Path | The data flow path name. |
| Package / Task | Which data flow task it is inside. |
| Source / Destination | The components either end of the path. |
| Runs | How many executions contributed. |
| Latest rows | The most recent run’s total for this path. |
| Typical rows | The median across the window. Latest against typical is the finding. |
| Rate | Rows a second. |
| State | Whether this path is steady, has grown, has shrunk, or has gone to zero. |
Component time
| Column | What it is |
|---|---|
| Component | The component name. |
| Package / Task | Where it lives. |
| Active time | How long it held the buffer. |
| Share | That time as a share of the data flow. |
| Phases | How many phases it reported. |
| Busiest phase | Which phase cost the most: PrimeOutput, ProcessInput, PreExecute and the rest. |
The toolbar
| Control | Options | Default |
|---|---|---|
| Window | 24 hours, 7 days, 30 days | 7 days |
| View | Rows moved, Component time | Rows moved |
| Catalog health | Opens SSIS Catalog Health, because Verbose logging is what fills SSISDB. |
Where the data comes from
| Source | What it gives |
|---|---|
catalog.execution_data_statistics |
rows_sent per buffer, per path, per execution, with the source and destination component names. |
catalog.execution_component_phases |
Phase start and end per component per execution. |
catalog.executions |
The execution and its logging level. |
Related reports
| Report | Why you would go there |
|---|---|
| SSIS Inside the Package | The task level breakdown around the data flow. |
| SSIS Package Speed | The duration this row count explains. |
| SSIS Catalog Health | What Verbose logging is doing to SSISDB. |
| SSIS Who Fills It | Which package is writing all of it. |
| SSIS Overrides | Where a logging level was raised and left. |
Frequently asked questions
The page says there is nothing to show and my packages ran. The catalog was not logging at Verbose. Row counts exist at Verbose only, and nothing else in SSIS records them.
A path moved zero rows and the package succeeded. That is the finding this page exists for. The package did what it was told; what it was told to move was empty.
Why not add the paths together for a package total? Because a source, a transform and a destination are three paths carrying the same rows. Adding them triples the answer on every package with a transform in it.
Should I turn Verbose on everywhere? No. It is the usual reason SSISDB becomes the largest database on the instance. Turn it on for the package you are investigating, and use SSIS Overrides to check that it went back.