Lire le statut des transactions dans la base Published

Bonjour,

Les échanges entre les différents modules de Project Server se fait par l’intermédiaire de transactions. La table MSP_ASSIGNMENT_TRANSACTIONS est l’une d’entre elles.

Si vous constatez des erreurs de mise à jour d’affectation, l’étude du contenu de cette table peut éventuellement vous aider à en comprendre les raisons. Malheureusement, il n’est pas facile de comprendre les données qui s’y trouvent et surtout, d’interpréter les différentes valeurs de champs qu’elle contient.

Ce script peut vous aider à mieux comprendre son contenu :

SELECT

      MAT.ASSN_TRANS_UID,

      MAT.ASSN_TRANS_SUBMIT_DATE,

      MAT.ASSN_TRANS_UPDATE_DATE,

      MR.RES_NAME AS 'SUBMITTER',

      MP.PROJ_NAME AS 'PROJECT',

      MT.TASK_NAME AS 'TASK',

      STATUS =

      CASE ASSN_TRANS_STATE_ENUM

            WHEN '0' THEN '0 - Not Submitted'

            WHEN '1' THEN '1 - Submitted Pending Approval'

            WHEN '2' THEN '2 - Approved or Rejected'

            WHEN '3' THEN '3 – Project updated'

            WHEN '4' THEN '4 – Failed'

            ELSE CAST (ASSN_TRANS_STATE_ENUM as VARCHAR) + ' - Unknown'

      END,

      TYPE =

      CASE MAT.ASSN_TRANS_TYPE_ENUM

            WHEN '0' THEN '0 - Task Assignment Update'

            WHEN '1' THEN '1 - Declined Task Assignment'

            WHEN '2' THEN '2 - Create Task Request'

            WHEN '3' THEN '3 - Delegate Task Assignment Request'

            WHEN '4' THEN '4 - Create Task Assignment Request'

            WHEN '5' THEN '5 - Team Delegation Request'

            WHEN '6' THEN '6 - Delete Task Request'

            WHEN '7' THEN '7 - Delete Task Assignment Request'

            ELSE CAST (ASSN_TRANS_TYPE_ENUM as VARCHAR) + ' - Unknown'

      END,

      ACTION =

      CASE MAT.ASSN_TRANS_ACTION_ENUM

            WHEN '0' THEN '0 - Pending'

            WHEN '1' THEN '1 - Approved'

            WHEN '2' THEN '2 - Rejected'

            ELSE CAST (ASSN_TRANS_ACTION_ENUM as VARCHAR) + ' - Unknown'

      END,

      ERROR =

      CASE MAT.ASSN_TRANS_ERROR_ENUM

            WHEN '0' THEN '0 - Applied'

            WHEN '1' THEN '1 - Undefined'

            WHEN '2' THEN '2 - Conflict'

            WHEN '3' THEN '3 - ProjectDeleted'

            WHEN '4' THEN '4 - InvalidUpdate; InvalidDelegation'

            WHEN '5' THEN '5 - InternalError'

            WHEN '7' THEN '7 - Count'

            ELSE CAST (ASSN_TRANS_ERROR_ENUM as VARCHAR) + ' - Unknown'

      END

FROM MSP_ASSIGNMENT_TRANSACTIONS MAT

INNER JOIN MSP_RESOURCES MR

ON MAT.ASSN_TRANS_SUBMITTER_RES_UID = MR.RES_UID

INNER JOIN MSP_PROJECTS MP

ON MAT.PROJ_UID=MP.PROJ_UID

LEFT JOIN MSP_TASKS MT

ON MAT.TASK_UID=MT.TASK_UID

Attention, ce script ne donne qu’un état de la table à un instant précis. Les résultats qu’il retourne ne peuvent pas être utilisé pour évaluer la santé d’un serveur, surtout si de nombreuses erreurs apparaissent. Les transactions ne sont pas systématiquement supprimées et certaines transactions apparaissant en erreur peuvent très bien avoir été exécutées ultérieurement sans problème.

N’hésitez pas à commenter cet article pour l’améliorer si vous avez des informations complémentaires.

Marc Biarnès