Schedulers

SSIS — planned

SSISDB holds executions, per-component row counts and the parameter values actually used. This integration is planned: documented here as reference, not connectable from the admin today.

The .dtsx file may well be in source control. What is not in source control is which version was deployed, which parameter values were supplied at execution, and which environment reference was bound — all of which live in SSISDB and any of which can change behaviour completely.

SSIS is also unusual in offering per-component row counts natively. Where logging level permits, catalog.execution_data_statistics records how many rows crossed each path between components, which is exactly the reconciliation most stacks make you infer.

Today

SSIS today

Decim does not read scheduler catalogs today, and pipeline discovery reads code only, so a job defined only inside the scheduler is not seen as a pipeline. What works now: logic kept in a connected GitHub repository is read as code; job output written to files or to the Windows Event Log on a Windows host can be read through the optional agent; and job history can be exported and attached to the incident as a file (up to 500 MB each).

The sources that ship today are GitHub, Google Cloud Logging, Jira Cloud and the optional Windows agent. Everything below this point describes the planned SSIS integration: what it is designed to read, and why.

Planned

What Decim will read from SSIS

The intended read-only surface for this integration. It is reference material for the roadmap — and useful on its own, because these are the views and APIs worth knowing during an incident whether or not any tool reads them for you.

SSIS — metadata sources
What From Why it matters
Executionscatalog.executionsPackage, project, folder, status, start and end
Component timingscatalog.executable_statisticsPer-executable duration and result
Row counts per pathcatalog.execution_data_statisticsRows crossing each data-flow path — the native reconciliation
Parameter values usedcatalog.execution_parameter_valuesWhat was actually supplied, not what the package defaults to
Messagescatalog.event_messagesWarnings and errors per execution
Project versionscatalog.object_versionsWhich build was deployed, and when
Environment bindingscatalog.environment_referencesWhich environment supplied the values

Permissions it is designed around

Written out in full, because "read-only access" is not a specification. These are the grants the planned integration is designed around and may change before it ships. Nothing below grants the ability to write, and row access would be requested only on the specific tables you name. You do not need to create any of this today.

Read access to the SSIS catalog sql
USE SSISDB;
CREATE USER decim_agent FOR LOGIN decim_agent;

-- ssis_logreader gives read access to the execution and logging views
-- without any ability to execute or deploy packages.
ALTER ROLE ssis_logreader ADD MEMBER decim_agent;

-- Catalog views are also readable individually if you prefer explicit grants:
GRANT SELECT ON catalog.executions                TO decim_agent;
GRANT SELECT ON catalog.executable_statistics     TO decim_agent;
GRANT SELECT ON catalog.execution_data_statistics TO decim_agent;
GRANT SELECT ON catalog.execution_parameter_values TO decim_agent;
GRANT SELECT ON catalog.event_messages            TO decim_agent;

What it would build

What this source would contribute to the pipeline topology and to the evidence available during an investigation:

  • Data-flow topology with genuine per-path row counts
  • The parameter values that actually applied to a given run
  • Deployment history, correlatable against an incident window
  • Component-level durations for anomaly detection

Today, topology is built from code in GitHub, and each connection is marked direct or inferred. The design direction for sources like this one is a provenance model: a step found in a definition is declared, a step seen running is observed, one that is both is verified, and where two sources disagree the disagreement is kept as a drift note rather than resolved silently. That model is planned, not shipped.

Failure modes

Failure modes it would surface

What this source is uniquely good at proving — and, just as usefully, at disproving. An investigation that can refute a hypothesis cheaply is worth as much as one that confirms it. Until the integration ships, the same signals can be checked by hand, or requested by Decim as a check your team runs.

Failure modes SSIS evidence distinguishes
Failure mode The signal
Wrong environment boundParameter values differing from the previous good run
Rows lost between componentsPath counts diverging inside one data flow
Package succeeded with zero rowsExecution success with all path counts at zero
Redeployment mid-incidentNew row in object_versions inside the window

Limits

What this source cannot tell you, even once it is read. Stated because an investigation that overstates its sources produces confident wrong answers, which is worse than an honest cause unclear.

  • Package-deployment-model (legacy) packages do not use SSISDB at all and leave only what their own logging captured
  • SSISDB retention defaults to 365 days but the cleanup job is often disabled or failing — verify rather than assume
  • Script components are compiled and their logic is not readable from the catalog

Related integrations

  • SQL Server Agent — Job steps are rows in msdb, not files in git. Will read sysjobs, sysjobsteps and sysjobhistory.
  • SQL Server — Will read catalog metadata, procedure bodies and write activity — the definitions git never sees.
  • Azure Data Factory — Pipeline JSON lives in the factory unless git integration is enabled — and live mode is the default.

See all integrations, or how the sources are combined into one graph.

Get started

Investigating a SSIS pipeline?

Bring an incident you already know the answer to. If Decim gets it wrong, that is a more useful demo than one where it doesn't.