Databases

SQL Server

Reads catalog metadata, procedure bodies and write activity — the definitions git never sees.

SQL Server is the richest single source in most estates Decim is built for, because it holds definitions that exist nowhere else. A stored procedure altered in production has no commit; a SQL Agent job step is a row in a table; a table that quietly started taking writes last March appears in no diagram. All three are readable from catalog views.

Everything here is metadata rather than data. The permissions needed to build a complete topology are VIEW DEFINITION and VIEW DATABASE STATE — no access to rows in your fact tables at all. Row access is requested separately and only for the specific reconciliation tables you name.

What is read

What Decim reads from SQL Server

Every item below is read-only, and each is a specific view, endpoint or file rather than a category of access. If something here is unacceptable in your environment, it can be removed from the query catalogue — see the agent for how that works.

SQL Server — metadata sources
What From Why it matters
Object definitionssys.sql_modulesStored procedure and view bodies — often the only copy
Object change timessys.objects.modify_dateTests schema-change hypotheses in one query
Column metadatasys.columns, sys.typesType and nullability, for truncation and overflow causes
Dependency edgessys.dm_sql_referenced_entitiesis_updated separates a write from a read — this is how edge direction is derived
Write activitysys.dm_db_index_usage_statsWhich tables are genuinely being written to, and when last
Live contentionsys.dm_exec_requestsBlocking and waits during a stall, if run while it is happening
Foreign keyssys.foreign_keysStructural edges between targets

Permissions required

Written out in full, because "read-only access" is not a specification. Nothing below grants the ability to write, and row access is requested only on the specific tables you name.

Minimum grants for topology discovery sql
CREATE LOGIN decim_agent WITH PASSWORD = '...';
CREATE USER  decim_agent FOR LOGIN decim_agent;

-- Metadata only. No rows from user tables.
GRANT VIEW DEFINITION     TO decim_agent;
GRANT VIEW DATABASE STATE TO decim_agent;

-- Reconciliation tables, named explicitly — never wildcarded.
GRANT SELECT ON dbo.IntakeBatch          TO decim_agent;
GRANT SELECT ON dbo.RejectedTransactions TO decim_agent;

-- Fact tables at COLUMN scope: enough to count rows per batch,
-- structurally unable to read an amount or a customer identifier.
GRANT SELECT ON dbo.[Transaction](BatchId, LoadedAtUtc) TO decim_agent;

DENY ALTER, DELETE, INSERT, UPDATE, EXECUTE TO decim_agent;

What it builds

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

  • Transform nodes from stored procedure bodies, with read/write edge direction
  • Target and store nodes from write activity, including undocumented ones
  • Structural edges from foreign keys
  • Schema change history sufficient to refute or confirm truncation causes

Nodes learned from a definition are marked declared; nodes observed running are marked observed; nodes both declared and observed are verified. Where two sources disagree, the disagreement is recorded as a drift note rather than resolved silently.

Failure modes

Failure modes it surfaces

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.

Failure modes SQL Server evidence distinguishes
Failure mode The signal
Silent schema changemodify_date inside the incident window
Undocumented reject tableWrite activity on an object in no definition
Contention with another workloadBlocking sessions and waits during the stall
Truncation on insertColumn max_length against the values being written

Limits

What this integration cannot tell you. Stated because an investigation that overstates its sources produces confident wrong answers, which is worse than an honest blocked.

  • Live contention queries only show requests executing at that moment — they must run during the stall, not after
  • Query Store gives far better historical plan and duration data, but is off by default on older instances
  • Cross-server topology needs a login on each instance; linked-server hops are not followed automatically

Related integrations

  • SQL Server Agent — Job steps are rows in msdb, not files in git. Reads sysjobs, sysjobsteps and sysjobhistory.
  • SSIS — SSISDB holds executions, per-component row counts and the parameter values actually used.
  • PostgreSQL — pg_stat_user_tables for write activity, pg_proc for function bodies, pg_stat_activity for live blocking.

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

Get started

Investigating a SQL Server 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.