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
Comments
- Anonymous
February 15, 2011
Bonjour, Pour avoir l'information de la tâche, j'utilise plutôt la table MSP_ASSIGNMENTS car avec MSP_TASK retourne parfois NULL. Donc, avec la modification, la partie du FROM doit être comme: FROM MSP_ASSIGNMENT_TRANSACTIONS MAT INNER JOIN MSP_RESOURCES MR ON MAT.ASSN_TRANS_SUBMITTER_RES_UID = MR.RES_UID INNER JOIN MSP_RESOURCES MA ON MAT.ASSN_TRANS_APPROVER_RES_UID = MA.RES_UID INNER JOIN MSP_PROJECTS MP ON MAT.PROJ_UID=MP.PROJ_UID INNER JOIN MSP_ASSIGNMENTS MS ON MAT.ASSN_UID=MS.ASSN_UID Et le SELECT: MAT.ASSN_TRANS_UID, MAT.ASSN_TRANS_SUBMIT_DATE, MAT.ASSN_TRANS_UPDATE_DATE, MR.RES_NAME AS 'SUBMITTER', MA.RES_NAME AS 'APPROVER', MP.PROJ_NAME AS 'PROJECT', MS.TASK_NAME AS 'TASK NAME'