Skip to content

Apprendre à lire la table des audits

Aujourd’hui, j’ai fait un tour de la table des audits de mon client car je la trouvais un peu lente à consulter. Une minute et plus pour un seul compte! Nous avions déjà eu un problème de ce genre dans le passé. Un service Windows poussait des données et créait près de 200 000 audit à chaque jour sans avoir changé la valeur. Alors, je voulais m’assurer que ce n’était pas encore le cas. Cette fois-ci j’ai dû chercher plus loin car le problème n’était pas aussi évident. J’ai dû apprendre à lire la table des audits. Voici ce que j’ai appris.

J’ai commencé par faire un count par type d’entité:
Select ObjectTypeCode, COUNT(1) from AuditBase group by ObjectTypeCode

Au Total: 5097189
Account: 3343432
SystemUser: 1259861


Pour Account seulement :

select AttributeMask, ChangeData, COUNT(1) from AuditBase
where ObjectTypeCode = 1
group by ChangeData, AttributeMask
order by 3 desc

AttributeMask ChangeData Count
,7,10001, 3~ 1406109
,3, territory,d462cc78-ed10-df11-be7b-005056832dd5 861462
,10083, 369122
,7,10001, ~ 47000
,161,159, ~False 23669
,10098, 10 15525
,10084, xrm_naics,04165d2a-3c53-e411-96da-00505686002a 12537
12136
,10098, 9 10917
,10098, 11 10693


Pour comprendre ceci il faut aller voir une autre table. Les champs modifiés sont dans la colonne AttributeMask:

SELECT distinct ar.name,
ar.ColumnNumber
FROM Attribute ar INNER JOIN
Entity en ON ar.EntityId = en.EntityId
WHERE en.ObjectTypeCode=1 AND ar.ColumnNumber=10001

name ColumnNumber
xrm_account_rating 10001


SELECT distinct ar.name,
ar.ColumnNumber
FROM Attribute ar INNER JOIN
Entity en ON ar.EntityId = en.EntityId
WHERE en.ObjectTypeCode=1 AND ar.ColumnNumber=7

name ColumnNumber
customertypecode 7

Cette recherche m’a permis de voir qu’il y a 1.4 millions d’audit sur des champs peu importants et 12 136 complètement vide! J’ai donc pu ajuster mon audit en conséquence.

Published inSQL