Background Information
Assignment corruption can occur in Project Server 2007 when project managers add resource assignments to tasks that are already tracking. To avoid this problem, follow the steps below to unpublish assignments for started tasks before assigning new resources. To correct the problem after an assignment causes the referenced error, follow the complete set of instructions below:
Resolution with Hotfix Release April 3, 2008
According to Microsoft, this error is fixed in the April 3, hotfix package:
Note: You must request a hotfix by opening a support incident with Microsoft. Although you may need to provide payment information to open a case with Microsoft, you will not be charged for obtaining a hotfix. Microsoft forces this procedure in order to track usage. On very rare occasions, Microsoft will make a hotfix package downloadable.
Note: Hotfix packages, unless specifically designed for a single customer, are cumulative. This means that installing the latest hotfix package also installs all previously issued fixes including those released in Service Packs. If you apply this hotfix, it will contain all of the fixes included in SP1 and the post-SP1 rollup package. You do not have to install these prior to installing the most current hotfix, and it does not matter if you have already installed previous updates.
Note: Hotfix packages are not fully regression tested as are Service Packs, so these carry some risk. Always make a full system backup before applying a hotfix.
Resolution without Hotfix
To identify the the task assignments(s) causing the error, run the following SQL Query on the Published Database. You must have access to the SQL database to run this query.
USE PROJECTSERVER_PUBLISHED
SELECT MSP_PROJECTS.PROJ_NAME, MSP_ASSIGNMENTS_SAVED.TASK_NAME,
MSP_RESOURCES.RES_NAME, MSP_ASSIGNMENTS_SAVED.ASSN_UID,
MSP_ASSIGNMENTS_SAVED.PROJ_UID,
MSP_ASSIGNMENTS_SAVED.TASK_UID, MSP_ASSIGNMENTS_SAVED.RES_UID
FROM MSP_ASSIGNMENTS_SAVED INNER JOIN
MSP_PROJECTS ON MSP_ASSIGNMENTS_SAVED.PROJ_UID =
MSP_PROJECTS.PROJ_UID INNER JOIN
MSP_RESOURCES ON MSP_ASSIGNMENTS_SAVED.RES_UID =
MSP_RESOURCES.RES_UID
WHERE (NOT EXISTS
(SELECT TASK_UID FROM MSP_TASKS_SAVED WHERE (TASK_UID =
MSP_ASSIGNMENTS_SAVED.TASK_UID)))
For each project and task returned by the query, open the project and apply a task-level view such as the Gantt Chart view. Insert the "Publish" column into the view. For each affected task, set the Publish field value to No. Select File > Publish, saving the project if the system prompts. Wait for the publish action to complete. For each affected task, set the Publish Filed value back to yes. Select File > Publish, saving the project if the system prompts. Repeat this process for each project with affected tasks assignments.