“Une erreur inconnue s’est produite” - (An unknow error has occured) lors de l’enregistrement d’une Lookup Table - Project Server 2007
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:
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
**************
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