Même si ce message d’erreur est rare, lors de son apparition aucune modification ne peut être apportée au lookup table impacté. Ce problème est indépendant de la version (Service Pack + Cumulatif) qui soit installé.

Voici le message d’erreur qui apparait lors de l’enregistrement en ayant fait ou pas des changements a votre table:

image

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pour comprendre ce qui se passe et quelle est la cause de ce message d’erreur nous devons regarder de plus près dans la base Published de Microsoft Project Server 2007 dans les tables MSP_LOOKUP_TABLE_VALUES et MSP_LOOKUP_TABLE_STRUCTURES.

Le nombre de lignes de chaque table doit être le même. Si a première vue vous remarquez une différence c’est un signe que l’une de ces deux tables (MSP_LOOKUP_TABLE_STRUCTURES) contient des lignes orphelines.

La requête suivante retourne ces entrées orphelines de la table MSP_LOOKUP_TABLE_STRUCTURES:

**************

SELECT

LTS.CREATED_DATE  as LTS_CREATED_DATE,

LTS.LT_STRUCT_UID as LTS_LT_STRUCT_UID,

LTV.LT_STRUCT_UID as LTV_LT_STRUCT_UID,

LTV.LT_VALUE_TEXT as LTV_LT_VALUE_TEXT,

LTV.LT_VALUE_FULL as LTV_LT_VALUE_FULL

FROM MSP_LOOKUP_TABLE_STRUCTURES as LTS

LEFT OUTER JOIN MSP_LOOKUP_TABLE_VALUES as LTV

ON LTS.LT_STRUCT_UID = LTV.LT_STRUCT_UID

WHERE LTV.LT_STRUCT_UID IS NULL

ORDER BY LTV.LT_VALUE_TEXT

**************

clip_image004

 

 

 

 

 

 

 

 

Ces trois lignes se trouvent dans la table MSP_LOOKUP_TABLE_STRUCTURES et n’ont pas de correspondant dans la table MSP_LOOKUP_TABLE_VALUES.

Avant de continuer il est impératif de vous assurer que votre environnement est sauvegardé et que cette sauvegarde est fonctionnelle.

 

La requête suivante permettra la suppression de ces entrées orphelines et résoudra le problème de l’enregistrement du Lookup Table:

 

**************

DELETE FROM dbo.MSP_LOOKUP_TABLE_STRUCTURES

WHERE LT_STRUCT_UID IN

(SELECT

LTS.LT_STRUCT_UID as LTS_LT_STRUCT_UID

FROM MSP_LOOKUP_TABLE_STRUCTURES as LTS

LEFT OUTER JOIN MSP_LOOKUP_TABLE_VALUES as LTV

ON LTS.LT_STRUCT_UID = LTV.LT_STRUCT_UID

WHERE LTV.LT_STRUCT_UID IS NULL)

**************

Dragos Diamandescu