De elf auditchecks, met naam en toenaam
Deze staan hier compleet omdat het geen geheim is. Je kunt ze zelf schrijven. Wat je koopt is dat ze gebouwd, getest en elke maand gedraaid zijn, en dat er een verificatiestap achter zit.
nondeterministic_update_from
HOOGEen
UPDATE ... FROMwaarvan de bron niet aantoonbaar één rij per join-sleutel levert. SQL Server pakt er zwijgend een en geeft geen foutmelding.Dit is de duurste van de elf. Hij wordt statisch gevonden en daarna live bevestigd met een telquery. Nul conflicten vandaag betekent latent, meer dan nul betekent dat het nu al gebeurt.
orphaned_references
HOOGViews of procedures die verwijzen naar een object dat niet meer bestaat.
Draait vaak jaren door zonder dat iemand het merkt, tot de tak wordt geraakt die hem echt aanroept.
collation_join_conflict
HOOGEen join tussen kolommen met verschillende collation.
Levert een runtimefout of een impliciete conversie die het queryplan onderuit haalt. Dezelfde klasse als een
nvarchar(max)-join-sleutel.mixed_collations
INFOKolommen met een andere collation dan de database-default.
De aanloop naar het vorige punt, voordat het een fout wordt.
trigger_cross_table_write
HOOGEen trigger die naar een andere tabel schrijft dan die waar hij op zit.
Onzichtbare zijeffecten. Je leest de procedure, je snapt hem, en er gebeurt toch iets anders.
disabled_triggers
INFOTriggers die bestaan maar uitgeschakeld zijn.
Meestal ooit tijdelijk uitgezet. De vraag is of iemand nog weet waarom.
triggers_present
INFOWelke tabellen überhaupt triggers hebben.
Niet fout, wel iets wat je wilt weten voordat je een laadproces aanpast.
stale_objects
HOOGCruft op naampatroon plus leeftijd:
_BAK,_Backup<datum>,_temp,_dd<datum>.Dit is de check die zes vergeten tabellen vond in een warehouse dat als goed onderhouden gold, waaronder een snapshot uit november 2024 die er veertien maanden later nog stond.
dead_indexes
INFOIndexen die wel onderhouden worden maar nooit gelezen.
Kosten schrijftijd bij elke laadrun en leveren niets op.
never_read_tables
INFOTabellen waar sinds de laatste herstart niets uit gelezen is.
Met de Power BI-laag erbij wordt dit hard: geen enkele query en geen enkel rapport.
tables_without_primary_key
INFOTabellen zonder primaire sleutel, met de stagingtabellen eruit gefilterd.
Die filtering is de moeilijkste van de elf. Een vals positief kost een echte bevinding uit de betaalde laag, dus de exclusie is bewust voorzichtig.
En acht refactor-checks
Daarnaast zoekt Cataloom acht T-SQL anti-patronen op, rangschikt ze op de echte kosten uit de plancache of Query Store, en laat het model een herschrijving voorstellen. Die herschrijving wordt daarna read-only nagerekend: beide versies draaien, de resultaatsets worden vergeleken, en wat niet te controleren valt krijgt het label sandbox nodig in plaats van een gok.
Waarom die verificatie er is
Op een productiewarehouse leverde een voorgestelde herschrijving 2.699 rijen waar het origineel er 2.848 gaf. Bij review zag die herschrijving er correct uit. Alleen door beide te draaien en te tellen kwam het verschil boven water, en met een stabiele baseline eronder zodat het aantoonbaar geen ruis was.