Recovering corrupted mpp while preserving TASK_UIDs

C

Curmudgeon

I'm posting this for all FWIW. I recently had a large (6000+ tasks)
Project 2003 file that had become both bloated (to 16MB) and corrupted
(could not open in Proj 2007). None of the usual recovery methods was
successful (save mpp immediately after opening, save as mpd/mdb/xml
and re-open in Project).

I was able to import the mpp into a new Project successfully, but this
reset all of the IMSUIDs, which was problematic because the IMSUIDs
are used in many other applications and needed to remain intact.

I saved both the original corrupted file and the new Project to
Access, then joined the MSP_TASKS table in each mdb in a query using
TASK_ID as a join field between ORIGINAL_TASK_UID and NEW_TASK_UID. I
then used that query to replace the new TASK_UID in the new file with
the original TASK_UID from the corrupted file. I made this
substitution in all of the MSP_* tables in the new mdb, and then
opened the latter in Project, imported all of the Project objects
(tables, views, filters, reports, modules, etc.) from the corrupted
mpp, and voila - I had a functioning copy of the original mpp with the
correct IMSUIDs. The new mpp was 10MB smaller than the original.

On closer examination I found that some flag, text and date fields
were not imported during this process, so I wrote a procedure in
Access that updates the fields in the mpp from the corresponding
tables in Access (MSP_TEXT_FIELDS, MSP_DATE_FIELDS, MSP_FLAG _FIELDS).

This process will work only if the corrupted mpp can be opened in
Project, and I am not certain that it would work for all mpp's (ours
is pretty basic and does not involve resources or assignments or
special calendars, etc.). In any case, it worked for us and might be
helpful to somebody, so here it is. If it doesn't work for you you can
have your money back ;^)
 
C

Curmudgeon

I'm posting this for all FWIW. I recently had a large (6000+ tasks)
Project 2003 file that had become both bloated (to 16MB) and corrupted
(could not open in Proj 2007). None of the usual recovery methods was
successful (save mpp immediately after opening, save as mpd/mdb/xml
and re-open in Project).

I was able to import the mpp into a new Project successfully, but this
reset all of the IMSUIDs, which was problematic because the IMSUIDs
are used in many other applications and needed to remain intact.

I saved both the original corrupted file and the new Project to
Access, then joined the MSP_TASKS table in each mdb in a query using
TASK_ID as a join field between ORIGINAL_TASK_UID and NEW_TASK_UID. I
then used that query to replace the new TASK_UID in the new file with
the original TASK_UID from the corrupted file. I made this
substitution in all of the MSP_* tables in the new mdb, and then
opened the latter in Project, imported all of the Project objects
(tables, views, filters, reports, modules, etc.) from the corrupted
mpp, and voila - I had a functioning copy of the original mpp with the
correct IMSUIDs. The new mpp was 10MB smaller than the original.

On closer examination I found that some flag, text and date fields
were not imported during this process, so I wrote a procedure in
Access that updates the fields in the mpp from the corresponding
tables in Access (MSP_TEXT_FIELDS, MSP_DATE_FIELDS, MSP_FLAG _FIELDS).

This process will work only if the corrupted mpp can be opened in
Project, and I am not certain that it would work for all mpp's (ours
is pretty basic and does not involve resources or assignments or
special calendars, etc.). In any case, it worked for us and might be
helpful to somebody, so here it is. If it doesn't work for you you can
have your money back  ;^)

I just noticed that I wrote that importing the corrupted mpp into a
new project reset all of the IMSIUDs. I meant TASK_UIDs, of course -
IMSUID is a unique ID that I use in a different application. I missed
the mistake when I proofread the post...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top