dynamics-ax (hourly) lists the monitored AX databases with version, schema,
companies and read access; discovery and the AX community rules (now marked
dynamicsAx) use the same detection. dynamics-ax-batch (5 min) reads BATCH
(3.0/4.0) or BATCHJOB/BATCHJOBHISTORY (2009+), keeps each job's own run
history; dynamics-ax-sequences (hourly) reads NUMBERSEQUENCETABLE and
SYSTEMSEQUENCES and forecasts from SQLInsight's own daily samples. All reads
run through [db].sys.sp_executesql under read committed with a 2 s lock
timeout (snapshot when allowed), bounded with TOP, never NOLOCK, never
written. Blocking now captures CONTEXT_INFO for the AX user mapping.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
AX 3.0 owns its tables as the database user bmssa (bmssa.SQLDICTIONARY), so
looking only in dbo never recognised a real AX 3.0 database. Detection now
uses sys.tables by name in any schema; later AX versions in dbo still match.
Tested against mock AX 3.0 (bmssa, int RECID), AX 4+ (dbo, bigint RECID) and
a plain database.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
COM-AX-001..007, Database scope, metadata and DMVs only (the agent has no
data access). An AX database is recognised by OBJECT_ID() of SQLDICTIONARY,
DATAAREA and SYSCONFIG, AX 3.0 by its 32-bit RECID, so the queries compile
and return nothing in every other database. SQL Server 2005 syntax.
- AX 3.0 out of support; AX 3.0 on SQL Server newer than 2005
- MAXDOP not 1 (server value before 2016, database scoped from 2016)
- tables without a unique RECID index (failed or partial synchronisation)
- large heaps (ClusterIndex not set in the AOT), statistics off
Tested against a mock AX 3.0 database and a plain database on SQL Server
2025, with QUOTED_IDENTIFIER both on and off (no XML methods).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>