Blog do Project - Tudo que você queria saber sobre Microsoft Project

Como evitar Linhas de Base orfãs

[ad]

Este bug esta com a correção prevista para o Cumulative Update de Junho, por isso achei importante traduzir o post do meu amigo Brian Smith.

Os passos abaixo são para evitar o problema e corrigir caso tenha ocorrido.

 
Sintomas:

Linhas de base orfãs causam erro ao publicar. O trabalho na fila é parado com o seguinte status Falha, Mas sem Bloqueio de Correlação. No detalhe do erro você verá alguma coisa parecida com:

ReportingProjectChangeMessageFailed (24006) – The INSERT statement conflicted with the FOREIGN KEY constraint “FK_MSP_EpmTaskBaseline_ProjectUID_TaskUID”. The conflict occurred in database “ProjectServer_Reporting”, table “dbo.MSP_EpmTask”. The statement has been terminated..

GeneralQueueJobFailed (26000) – ReportingProjectPublish.ReportProjectPublishMessageEx

Estas falhas acontecem na ação de reporting na fila, logo isso significará que os relatórios com base no banco de dados Reporting e qualquer atualização do cubo OLAP poderá estar desatualizada.

 
Causa:

A raiz de todos esses problemas é que quando você usa qualquer uma das opções Salvar e Enviar (XML, CSV, Excel, etc).

Ao executar essa ação o Project incorretamente altera alguns valores internos de algumas entidades como tarefas e calendários.

 

Como evitar:

Se você precisa usar o Salvar e Enviar, então a melhor prática até que solte a correção para isso é primeiro salvar o plano para o servidor, e publicar (caso queira). Em seguida, faça o que você precisa com o Salvar e Enviar, e, em seguida, feche o projeto sem salvar e dando check-in. Lembre-se de NÃO salvar quando for questionado, você já salvou antes da ação de Salvar e Enviar, logo pode descartar este ultimo salvar. Como a versão local do cache terá sido “corrompida”, neste caso deve-se excluir o projeto do cache local apenas depois que o check-in estiver concluído.

 

AVISO – as seguintes etapas são consultas diretas nos bancos de dados do Project Server – por favor, certifique-se que você está trabalhando com as bases de dados adequadas ao usar estes – e ter um backup de banco de dados, se algum problema ocorrer.
A detecção desta condição é bastante simples, pois estamos apenas à procura de linhas de base de tarefas que não existem, portanto, a seguinte consulta no banco de dados Draft irá fazer isso:

— Detect for orphan baseline task records that can cause reporting publish job failures.

USE ProjectServer_Draft — specify the appropriate draft database

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)

 

Isto irá retornar as linhas aonde o erro existe – e identificar quais projetos são afetados. Lembre-se de remover o projeto do cache local na máquina dos Gerentes de Projeto, caso contrário eles irão fazer o erro voltar.
Os próximos scripts fazem a limpeza no banco de dados, e eles são simplesmente a exclusão dos registros das tarefas são inexistentes.

— Script to 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 to 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)

Espero que isso ajude a compreender o problema e a forma de evitá-lo até que a correção venha.

Se você precisar de alguma ajuda com estes passos, sinta-se livre para abrir um chamado de suporte – lembrando que, como isto é um bug o chamdo não é cobrado.

Abraços,

André Xavier

Evento: InfoTech 2012

[ad]

Marque na sua agenda. As comunidades estão organizando um grande evento que acontecerá nos dias 15, 16 e 17 de maio em Belo Horizonte, na Infórium. Serão três noites inteiras com três auditórios rolando palestras simultâneas para você escolher. Reunimos um grupo de profissionais e especialistas em várias tecnologias para trazer em primeira mão para você o que há de mais moderno.

cartaz-infotech2012

Eu irei palestrar no dia 16 de Maio as 19h.

  • EPM-B01 Gerenciando Demandas, Projetos e Portfólios usando Microsoft Project Server 2010 (Auditório B)

E as 21h:

  • EPM-C03 Gerenciando Projetos com o Microsoft Project 2010, novidades e dicas (Auditório C)

Para fazer a inscrição, use o link abaixo:

Abraços,

André Xavier

Importante: Correção para valores duplicados numa PDP

[ad]
O Cumulative Update de Abril do Project Server 2010 inclui algumas correções bastante esperadas, entre elas:

  • A mensagem de “Erro desconhecido” ou “Unknown Error”na Central de Projetos.
  • Ao tentar editar as informações do projeto numa PDP (Página de Detalhe do Projeto), mais de um valor é exibido por campo personalizado.

Neste post irei focar no segundo erro. Apesar do Cumulative Update corrigir o erro e não deixar que ele volte a ocorrer, os valores que foram inseridos no banco de dados de forma errada devido ao bug não são corrigidos. Abaixo estão os passos que serão necessários para detectar e limpar os registros duplicados que causam esse problema.

OBS: Nós recomendamos que você teste os scripts de limpeza em um ambiente de desenvolvimento para que você possa validar os resultados antes de implementar os scripts em um ambiente de produção. Além disso, você só deve executar esta operação quando não houver atividade de usuário no ambiente.

Scripts

  • Script 1 detecta se você está enfrentando esse problema e apresenta os projetos afetados e campos personalizados.
  • Script 2 faz o backup da tabela afetada.
  • Script 3 elimina os registros duplicados.
  • Script 4 desfaz a exclusão, restaurando os registros da tabela de backup. (Executar apenas caso de erro)
  • Script 5 remove a tabela de backup.
Script 1

A consulta SQL a seguir verifica que esta questão está presente em seu banco de dados. Se não retornar nenhuma linha então você não está enfrentando esse problema. Substitua o nome do banco do Project Server no espaço reservado na primeira linha da consulta.

USE <ProjectServer_Published>
SELECT CFV.PROJ_UID, MP.PROJ_NAME, CFV.MD_PROP_UID, CFPV.MD_PROP_NAME, COUNT (*) TOTALCOUNT FROM MSP_PROJ_CUSTOM_FIELD_VALUES AS CFV
INNER JOIN MSP_PROJECTS AS MP ON CFV.PROJ_UID=MP.PROJ_UID
INNER JOIN MSP_CUSTOM_FIELDS_PUBLISHED_VIEW AS CFPV
ON CFV.MD_PROP_UID=CFPV.MD_PROP_UID
where CFPV.MD_PROP_MAX_VALUES=1
GROUP BY CFV.PROJ_UID,MP.PROJ_NAME, CFV.MD_PROP_UID, CFPV.MD_PROP_NAME HAVING COUNT (*) >1
ORDER BY TOTALCOUNT DESC

 

Script 2

O Script 2 cria uma tabela que é chamada MSP_PROJ_CUSTOM_FIELD_VALUES_Backup e faz backup dos registros na tabela MSP_PROJ_CUSTOM_FIELD_VALUES. Certifique-se de que você executar esse script uma vez antes de executar Script 3. Se você quiser desfazer a operação de limpeza que é realizada pelo script 3, você pode executar novamente script 2.

 

USE <ProjectServer_Published>
SELECT * INTO MSP_PROJ_CUSTOM_FIELD_VALUES_BACKUP FROM MSP_PROJ_CUSTOM_FIELD_VALUES

 

 

Script 3

Script 3 primeiro detecta se você está enfrentando esse problema. Se você não estiver enfrentando esse problema, nenhuma ação é tomada. Se você estiver enfrentando esse problema, o script remove os registros duplicados.

USE <ProjectServer_Published>
DECLARE @ITERATIONS AS INT
SET @ITERATIONS=
(SELECT TOP 1 COUNT (*) TOTALCOUNT FROM MSP_PROJ_CUSTOM_FIELD_VALUES AS CFV
INNER JOIN MSP_PROJECTS AS MP ON CFV.PROJ_UID=MP.PROJ_UID
INNER JOIN MSP_CUSTOM_FIELDS_PUBLISHED_VIEW AS CFPV ON CFV.MD_PROP_UID=CFPV.MD_PROP_UID
INNER JOIN MSP_CUSTOM_FIELDS AS CF ON CFV.MD_PROP_UID = CF.MD_PROP_UID
WHERE CF.MD_PROP_MAX_VALUES=1
GROUP BY CFV.PROJ_UID,MP.PROJ_NAME, CFV.MD_PROP_UID, CFPV.MD_PROP_NAME
HAVING COUNT (*) >1
ORDER BY TOTALCOUNT DESC )-1

IF @ITERATIONS IS NULL
BEGIN
PRINT 'DID NOT FIND ANY DUPLICATES TO PROCESS'

END
ELSE
BEGIN

PRINT 'TOTAL ITERATIONS TO PROCESS: '
PRINT @ITERATIONS

WHILE @ITERATIONS <>0
BEGIN
PRINT 'ITERATION COUNT: '
PRINT @ITERATIONS

DECLARE @PROJ_UID AS UNIQUEIDENTIFIER
DECLARE @MD_PROP_UID AS UNIQUEIDENTIFIER
DECLARE @MOD_DATE AS DATETIME
DECLARE ACDELETEDUPLICATERECORDS CURSOR FOR 

SELECT PROJ_UID, MD_PROP_UID, MIN(MOD_DATE) AS MOD_DATE FROM MSP_PROJ_CUSTOM_FIELD_VALUES WHERE PROJ_UID IN
(
SELECT CFV.PROJ_UID FROM MSP_PROJ_CUSTOM_FIELD_VALUES AS CFV
INNER JOIN MSP_PROJECTS AS MP ON CFV.PROJ_UID=MP.PROJ_UID
INNER JOIN MSP_CUSTOM_FIELDS_PUBLISHED_VIEW AS CFPV
ON CFV.MD_PROP_UID=CFPV.MD_PROP_UID
INNER JOIN MSP_CUSTOM_FIELDS AS CF
ON CFV.MD_PROP_UID = CF.MD_PROP_UID
WHERE CF.MD_PROP_MAX_VALUES=1
GROUP BY CFV.PROJ_UID,MP.PROJ_NAME, CFV.MD_PROP_UID, CFPV.MD_PROP_NAME HAVING COUNT (*) >1
)
AND MD_PROP_UID IN
(
SELECT CFV.MD_PROP_UID FROM MSP_PROJ_CUSTOM_FIELD_VALUES AS CFV
INNER JOIN MSP_PROJECTS AS MP ON CFV.PROJ_UID=MP.PROJ_UID
INNER JOIN MSP_CUSTOM_FIELDS_PUBLISHED_VIEW AS CFPV
ON CFV.MD_PROP_UID=CFPV.MD_PROP_UID
INNER JOIN MSP_CUSTOM_FIELDS AS CF
ON CFV.MD_PROP_UID = CF.MD_PROP_UID
WHERE CF.MD_PROP_MAX_VALUES=1
GROUP BY CFV.PROJ_UID,MP.PROJ_NAME, CFV.MD_PROP_UID, CFPV.MD_PROP_NAME HAVING COUNT (*) >1
)

GROUP BY PROJ_UID, MD_PROP_UID
HAVING COUNT (*) >1
ORDER BY PROJ_UID

OPEN ACDELETEDUPLICATERECORDS
FETCH NEXT FROM ACDELETEDUPLICATERECORDS
INTO @PROJ_UID, @MD_PROP_UID, @MOD_DATE
WHILE @@FETCH_STATUS =0 

BEGIN 

DELETE FROM MSP_PROJ_CUSTOM_FIELD_VALUES
WHERE PROJ_UID=@PROJ_UID
AND MD_PROP_UID=@MD_PROP_UID
AND MOD_DATE=@MOD_DATE

FETCH NEXT FROM ACDELETEDUPLICATERECORDS
INTO @PROJ_UID, @MD_PROP_UID, @MOD_DATE 

END 

CLOSE ACDELETEDUPLICATERECORDS
DEALLOCATE ACDELETEDUPLICATERECORDS 

SET @ITERATIONS = @ITERATIONS-1
END
END

 

Script 4

O script 4 só deverá ser executado caso você queira desfazer a operação de limpeza que foi realizada pelo script 3. O Script 4 funciona restaurando os registros que o Script 2 fez backup.

USE <ProjectServer_Published>
DELETE FROM MSP_PROJ_CUSTOM_FIELD_VALUES
INSERT INTO MSP_PROJ_CUSTOM_FIELD_VALUES
SELECT * FROM MSP_PROJ_CUSTOM_FIELD_VALUES_BACKUP

OBS: Executar apenas em caso de algum problema.

 

Script 5

Para remover a tabela de backup criada no Script 2

 

USE <ProjectServer_Published>
DROP TABLE MSP_PROJ_CUSTOM_FIELD_VALUES_BACKUP

Espero ter ajudado !

Abraços,

André Xavier

Project Server 2010: Cumulative Update Abril 2012

[ad]
Este Cumulative Update inclui uma série de correções, mas a Microsoft recomenda que você teste em um ambiente de homologação baseado em seu ambiente de produção antes de efetivamente colocar em produção.

O artigo abaixo fornece informações sobre como instalar o CU do Project Server.

Updates para Project Server 2010

http://technet.microsoft.com/en-us/projectserver/gg176680.aspx

Você pode ler sobre as correções incluídas no cumulative update, nos seguintes artigos:

Pacotes Consolidados:

Pacotes Individuais:

IMPORTANTE:Os pacotes consolidados tem vários updates, por isso é recomendado a instalação para que nenhuma dependencia do Project Server fique desatualizada.

Instalação Cliente:

A instalação do patch no cliente é simples. As instruções para instalar o patch são:

OBS:A Microsoft recomenda que você teste no seu ambiente de homologação antes de instalar em produção.

  1. Baixe o hotfix
  2. Extraia o pacote, executando o arquivo exe.
  3. Execute o “.exe” extraído para aplicar o patch no seu cliente: Project Professional ou Standard 2010.

Project Server 2010–Depois de migrar, as PDP não funcionam!

Estava numa migração do Project Server 2007 para o Project Server 2010 e deparei com o seguinte cenário:

Ao entrar no detalhe do projeto as PDP’s não apareciam e ao tentar editar uma PDP, gerava um erro na página.

Após uma busca encontrei um post do sempre competente Brian Smith. (Ele é O cara!)

A solução é muito, mas muito simples!

Abra o PowerShell do SharePoint e execute os seguintes comandos:

$Web = get-SPWeb http://<servername>/<PWAInstance>

$Web.AllProperties | Format-Table

Veja se no campo PWAURL esta com um valor diferente de vazio, se estiver, execute o comando abaixo:

$Web = get-SPWeb http://<servername>/<PWAInstance>

$Web.AllProperties[“PWAURL”]=””

$Web.Update()

As PDP’s agora vão funcionar 100%!

Abraços,

André Xavier

Erro ao sincronizar com o AD?

Hoje fui dar uma olhada num servidor e descobri que a sincronização do AD estava aparecendo como Falha Parcial. No Event Viewer achei este erro:

 

Identificação da Correlação: cbb95a00-a618-4be9-b721-af7bdc17d057
Nome do SSP: Project Server Service Application
ErroPS: NoError (0)
A resource could not be updated during Project Server Active Directory Synchronization. Error: AdminNTAccountNotFound. Resource GUID: 677d3439-a656-4e83-8891-4952a5750ab1. Resource Name XXXXX

 

Após algumas buscas descobri que não basta colocar o recurso como inativo no AD, deve-se (DEVE-SE) retirá-lo dos grupos que fazem a sincronização com o AD.

Feito isso, corrigido!

Abraços,

André Xavier

Project Server 2010: Cumulative Update de Outubro de 2011

Project Server 2010

O Cumulative Update inclui uma série de correções, mas a Microsoft recomenda que você teste em um ambiente de homologação baseado em seu ambiente de produção antes de efetivamente colocar em produção.

O artigo abaixo fornece informações sobre como instalar o CU do Project Server.

Updates para Project Server 2010

http://technet.microsoft.com/en-us/projectserver/gg176680.aspx

Você pode ler sobre as correções incluídas no CU de Outubro, nos seguintes artigos:

Pacotes Consolidados:

Pacotes Individuais:

Instalação Cliente:

A instalação do patch no cliente é simples. As instruções para instalar o patch são:

OBS: A Microsoft recomenda que você teste no seu ambiente de homologação antes de instalar em produção.

  1. Baixe o hotfix
  2. Extraia o pacote, executando o arquivo exe.
  3. Execute o “.exe” extraído para aplicar o patch no seu cliente: Project Professional ou Standard 2010.

Relançado o Cumulative Update de Agosto

Pessoal,

Foi re-lançado o pacote do SharePoint Foundation e com isso outros pacotes foram atualizados.

Os links continuam os mesmos do post anterior:

http://blogdoproject.com.br/2011/10/11/atualizaes-cumulativas-de-agosto-de-2011/

Lembrando que ainda é a atualização cumulativa de agosto, embora seja rotulado como 13 de outubro , de 2011.

Este não é o cumulative update de Outubro!

A versão foi incrementado para 14.0.6109.5005 para refletir esta nova compilação, mas apenas o componente SharePoint Foundation que foi atualizado.

O Brian Smith, acredita que foi atualizando o SharePoint para os horários de verão de Russia, Fiji e Samoa. 🙂

  • Quem ainda não instalou este cumulative update não precisa se preocupar, basta instalar normalmente que já estará com esta versão mais nova.
  • Que já instalou, basta instalar o pacote do SharePoint Foundation será mais fácil e rápido.

Obrigado Brian pelos esclarecimentos!

Abraços,

André Xavier

Project Server 2010: Não apague o Cache!

Artigo retirado do Blog do amigo Brian Smith:

Eu estava usando o título “por que as pessoas ainda estão excluindo o cache?” até que meu colega Corrie surgiu com um muito melhor! Em vez de perguntar por que vocês ainda está fazendo isso, eu estou lhe dizendo para não fazer!

Eu sei que há muita história por trás disso, e para aqueles de você que usaram o Project Server 2007 em seus primórdios, havia alguns desafios, como a saga ‘check-in pendentes’. Nós corrigimos o problema, corrigimos novamente (e novamente) e agora você não deve estar mais tendo quaisquer problemas. No entanto, muitos clientes com quem eu falo rotineiramente estão excluindo o projeto do cache local antes de eles abrirem-lo e, em seguida, novamente após encerrarem! Por quê!?! Seu trabalho é muito importante – ela evita que você tenha que puxar os dados do servidor novamente – que irão reduzir o tráfego de rede, o impacto sobre os serviços da web e banco de dados.

Eu também gostaria de abordar um equívoco no qual eu ouvi de vários clientes – a escolha de onde carregar o projeto de-cache ou servidor? Você não tem escolha – O Project irá carregá-lo do cache caso ele exista, em seguida, carregar todos os pedaços incrementais que estão no servidor mas estão desatualizados no cache, com isso você sempre terá a versão atual do plano.

Na captura da tela a seguir:

Retrieve the list

Na tradução temos: ‘Recuperar a lista de todos os projetos do Project Server’. Ao clicar nesta opção, o Project não irá abrir o projeto do servidor ignorando se você já o tem no Project Server, você não tem a opção e você não precisa escolher.

Vou para aqui a tradução do artigo e contar um exemplo disso que o Brian falou acima.

Fui a alguns meses num cliente em São Paulo que iriamos migrar o Project Server 2007 para o Project Server 2010, mas antes de colocarmos a mão na massa, quis conversar com o pessoal qual o problema que mais atrapalhava o dia a dia deles. Foi quase que unanime, todos reclamavam do cache e do problema de check-in pendente. Achei estranho, já há algum tempo não tinha mais reclamações sobre este problema. Para migrar os dados, percebi que a base deles tinha sido atualizada apenas com o cumulative update de dezembro de 2008 L, nem o Service Pack 2 eles tinham instalado!

Após atualizar o 2007, pois era pré-requisito da migração, vários usuários me agradeceram e brincaram que não tinham mais trabalho com o cache que por eles nem precisaria mais migrar… J

Então por favor, se você tiver excluindo seu cache por uma questão de rotina, então pare! Converse com o PMO ou com o pessoal de TI perguntando por que eles ainda fazem isso, caso seja necessário, abra um chamado no suporte da Microsoft.

Vou deixar o link para os updates do EPM 2007:

http://blogdoproject.com.br/atualizacoes/projectserver2007/

e para os updates do EPM 2010:

http://blogdoproject.com.br/atualizacoes/projectserver2007/

Espero ter ajudado!

Abraços,

André Xavier