Monday, February 17, 2014

Queue – ReportingProjectChangeMessageFailed (24006) – The INSERT statement conflicted with the FOREIGN KEY constraint FK_MSP_EpmAssignment_ResourceOwnerUID

Sintoma

            Ao publicar alguns projetos o job “Reporting (Project Publish)” relacionado ao projeto falha com a seguinte mensagem de erro:

“ReportingProjectChangeMessageFailed (24006) – The INSERT statement conflicted with the FOREIGN KEY constraint “FK_MSP_EpmAssignment_ResourceOwnerUID””

Causa

            Há várias causas distintas para a falha do job “Reporting (Project Publish)”. Neste caso em decorrência da mensagem de erro descrita acima a causa estava relacionada a falha de sincronização de um recurso membro do projeto com o base de dados de Reporting.

Solução

1. Executar a query abaixo na base de dados de Reporting (ProjectServer_Reporting – usar o nome conforme seu ambiente) com o intuito de identificar quais recursos tem problema de sincronização

select PubMR.Res_UID, PubMR.RES_Name, PubMR.WRES_Account, RepMER.ResourceName from ProjectServer_Reporting.dbo.MSP_Resources PubMR

left outer join ProjectServer_Reporting.dbo.MSP_EpmResource RepMER on PubMR.RES_UID = RepMER.ResourceUID where ResourceName is NULL

2. Da lista acima para o usuário que é membro do projeto forçar seu sincronismo com a base de Reporting através dos passos abaixo:

a. Acessar o PWA -> Resource Center

b. Selecionar o usuário no Resource Center e Editar

c. Salvar sem fazer qualquer alteração

d. Verificar se o seguinte job é completado com sucesso

 

3. Publicar novamente o projeto e verificar se o job “Reporting (Project Publish)” completa com sucesso.

Informações adicionais

            Conforme dito há várias outras razões que podem ocorrer a falha do job “Reporting (Project Publish)”, mas as causas dependem diretamente da descrição do erro gerado. Duas outras causas mais conhecidas do erro são:

  1. Recurso atribuido a uma tarefa do tipo “Sumarry Task”
  2. Tarefas nas Linhas de base orfãs. Como detectar este cenário e corrigir:

Please test the behavior on a test environment before.

Run the following scripts on your draft and published databases:

- First run this script to detect them:

select PROJ_NAME, MTB.PROJ_UID,TASK_UID,TB_BASE_NUM from MSP_TASK_BASELINES MTB

inner join MSP_PROJECTS MP on MTB.proj_uid=MP.proj_uid

where TASK_UID not in (select TASK_UID from MSP_TASKS)

- Next, we need to delete them:

—Script top run on the draft DB

USE ProjectServer_Draft – specify the appropriate draft database

delete from MSP_TASK_BASELINES

where TASK_UID not in (select TASK_UID from MSP_TASKS)

—Script top run on the published DB

USE ProjectServer_Published — specify the appropriate published database

delete from MSP_TASK_BASELINES

where TASK_UID not in (select TASK_UID from MSP_TASKS)

No comments:

Post a Comment