Compartilhar via


Verificação e limpeza pré-migração

Atualizado: maio de 2009

 

Tópico modificado em: 2015-02-27

Neste artigo:

  • Executar a ferramenta de migração com a opção -verify

  • Executar testes manuais para problemas de migração

Este artigo descreve como verificar se os dados de origem do Microsoft Office Project Server 2003 que você planeja migrar estão em um estado válido para serem migrados para o Microsoft Office Project Server 2007. O artigo também descreve ferramentas úteis para verificar se os dados que você planeja migrar estão inválidos ou corrompidos. A descrição inclui a opção -verify da ferramenta de migração e consultas SQL que podem ser executadas nos bancos de dados do Project Server 2003, assim como verificações gerais que devem ser feitas no ambiente do Project Server 2003 antes da migração.

ImportantImportante:
Dependendo do tamanho do banco de dados, a migração pode se tornar um processo bastante demorado. (Para obter mais informações, consulte Dados de desempenho de migração para o Project Server 2007.) Se a migração de dados globais falhar (por exemplo, devido a recursos duplicados da empresa), você deve solucionar a causa do problema e repetir o processo de migração de dados globais desde o início. Com a execução da verificação e limpeza pré-migração antes de executar o processo de migração, as chances de falha na ferramenta de migração serão consideravelmente reduzidas.

Executar a ferramenta de migração com a opção -verify

A opção -verify da ferramenta de migração procura os seguintes itens nos dados do Project Server 2003:

  • Projetos que estão com check-out

  • Projetos que foram modificados externamente

  • Projetos com atualizações de status pendentes

  • Recursos duplicados da empresa

A ferramenta de migração determina se as alterações precisam ser feitas nos dados para torná-los adequados para migração. As alterações são gravadas no arquivo de log da migração, mas a ferramenta não corrige os dados para você.

A opção -verify não é o único conjunto de verificações que você precisa executar nos dados. Execute os procedimentos de verificação restantes, apresentados neste artigo, para garantir que os dados estejam em um estado válido para migração.

Leia o arquivo de log gerado e faça as alterações necessárias nos dados do Project Server 2003 para eliminar os problemas que podem ocorrer durante a migração dos dados.

NoteObservação:
A execução da ferramenta de migração com a opção -verify não migra dados globais ou de projetos, mesmo que o arquivo de configuração de migração esteja configurado para isso.

Determinando se foi feito check-out nos projetos

Um projeto não pode ser migrado se estiver com check-out. Recomendamos que, antes de qualquer migração, os dados de origem estejam em um estado estável. Verifique os projetos com atenção, para garantir que eles estejam em um estado estável antes de ser migrado. Os coordenadores de migração devem definir um prazo final para que os Gerentes de Projeto façam check-in em seus projetos. Se o prazo for ultrapassado, o check-in deve ser imposto em todos os projetos.

Como verificar o problema

Se um projeto que deve ser migrado estiver com check-ou quando a ferramenta de migração for executada com a opção -verify, você verá a seguinte mensagem no console e no log:

Os projetos a seguir estão com check-out e não serão migrados pela ferramenta de migração (a ferramenta de migração não será interrompida, apenas pulará esses projetos). Faça check-in nos projetos.

Resultado de teste com sucesso Resultado de teste malsucedido

A mensagem anterior não será exibida se você tiver feito check-in em todos os projetos.

A mensagem anterior será exibida, seguida de nomes de projetos. Cada nome de projeto será exibido em uma linha separada.

Como corrigir o problema

Faça check-in em todos os projetos que estão com check-out.

Fazer check-in nos projetos que estão com check-out no Project Server 2003

  1. No Project Web Access do Project Server 2003, clique em Administrador.

  2. Clique em Gerenciar Recursos do Enterprise.

  3. Clique em Fazer check-in em Projetos da Empresa e veja os projetos que estão com check-out. Coordene os check-ins ou execute uma operação forçada de check-in pelo Project Web Access.

NoteObservação:
Também é possível verificar projetos com check-out executando a seguinte consulta SQL nos bancos de dados "Tabelas de Projeto do Project Server 2003" e "Tabelas da Web do Project Server 2003".
select PROJ_NAME from dbo.MSP_PROJECTS where PROJ_CHECKEDOUT = 1 and PROJ_TYPE in (0, 1)
Se houver retorno de algum resultado, os projetos citados estão com check-out.

Determinando se os projetos foram editados externamente

Um projeto não pode ser migrado se tiver sido editado externamente.

Como verificar o problema

Quando a ferramenta de migração é executada com a opção -verify, você verá esta mensagem no console e no log, se um projeto a ser migrado tiver sido editado externamente:

Os projetos a seguir foram modificados externamente e não serão migrados pela ferramenta de migração (a ferramenta de migração não será interrompida, apenas pulará esses projetos). Abra os projetos usando o Project Professional 2003 e salve-os novamente no Project Server 2003.

Resultado de teste com sucesso Resultado de teste malsucedido

A mensagem anterior não será exibida se nenhum projeto tiver sido editado externamente.

A mensagem anterior será exibida, seguida de nomes de projetos. Cada nome de projeto será exibido em uma linha separada.

Como corrigir o problema

Abra o projeto que foi editado externamente no Project Professional 2003, salve-o e faça check-in no projeto novamente no servidor. Esse processo deverá definir o sinalizador Editado externamente como falso.

NoteObservação:
Também é possível verificar projetos editados externamente executando a seguinte consulta SQL nos bancos de dados "Tabelas de Projeto do Project Server 2003" e "Tabelas da Web do Project Server 2003".
select PROJ_NAME from dbo.MSP_PROJECTS where (PROJ_EXT_EDITED = 1 or RESERVED_BINARY_DATA is null) and PROJ_TYPE in (0, 1)

Se houver o retorno de algum resultado, os projetos citados foram editados externamente.

Determinando se os projetos têm atualizações de status pendentes

Por padrão, se os projetos do Project Server 2003 tiverem atualizações pendentes, eles não serão migrados para o Office Project Server 2007. Antes da migração, recomendamos que os usuários aceitem ou recusem atualizações de status, para garantir que os projetos estejam em um estado estável para a migração.

Como procurar o problema

Se um projeto tiver atualizações de status pendentes, quando a ferramenta de migração for executada com a opção -verify, você verá esta mensagem no console e no log:

Os projetos a seguir têm atualizações de status pendentes e não serão migrados pela ferramenta de migração (a ferramenta de migração não será interrompida, apenas pulará estes projetos). Aplique as atualizações pendentes.

Resultado de teste com sucesso Resultado de teste sem sucesso

A mensagem anterior não será exibida se nenhum projeto tiver atualizações de status pendentes.

A mensagem anterior será exibida, seguida de nomes de projetos. Cada nome de projeto será exibido em uma linha separada.

Como corrigir o problema

O parâmetro StopProjectMigrationIfStatusUpdatesPending no arquivo de configuração de migração pode ser configurado para permitir a migração de projetos com atualizações pendentes. Para obter mais informações sobre esse parâmetro, consulte Configurando a ferramenta de migração para o Project Server.

Recomendamos que, antes de qualquer migração, você defina um prazo final para os gerentes de projeto aceitarem ou recusarem as atualizações de status pendentes. Se o prazo for ultrapassado, imponha a migração de todos os projetos (mesmo se as atualizações de status ainda estiverem pendentes).

NoteObservação:
Também é possível procurar projetos com atualizações de status pendentes executando a seguinte consulta SQL no banco de dados "Tabelas da Web do Project Server 2003".
select distinct PROJ_NAME from dbo.MSP_WEB_ASSIGNMENTS wa, dbo.MSP_WEB_TRANSACTIONS trans, dbo.MSP_WEB_PROJECTS wp where wa.WPROJ_ID = wp.WPROJ_ID and trans.WASSN_ID = wa.WASSN_ID and trans.WTRANS_STATE in (0, 1, 2)
Se houver o retorno de algum resultado, os projetos citados têm atualizações de status pendentes.

Determinando se há recursos da empresa duplicados

O Project 2003 e Project 2007 não oferecem suporte à existência de vários recursos com o mesmo nome no pool de recursos da empresa. Essa situação pode ocorrer devido a edições diretas no banco de dados. Os nomes duplicados podem não aparecer no Project Professional quando você está editando o Pool de Recursos da Empresa, porque só pode haver uma entrada na tabela MSP_WEB_RESOURCES para um recurso da empresa com esse nome. Não há uma maneira simples para solucionar o problema. Discuta com o especialista do Project Server para resolver essa questão. A seguir, há algumas diretrizes para ajudá-lo a procurar e corrigir problemas que ocorrem durante a duplicação de recursos da empresa.

Como procurar o problema

Se houver recursos da empresa duplicados quando você executar a ferramenta de migração com a opção -verify, você verá esta mensagem no console e no log:

O pool de recursos da empresa contém entradas duplicadas para os recursos a seguir. Não há suporte para esse cenário no Project 2003 e pode haver falha na migração de recursos da empresa. Verifique se não há recursos duplicados antes de iniciar a migração.

Resultado de teste com sucesso Resultado de teste malsucedido

A mensagem anterior não será exibida se não houver recursos da empresa duplicados.

A mensagem anterior será exibida, seguida de nomes de recursos. Cada nome de recurso será exibido em uma linha separada.

NoteObservação:
Também é possível verificar recursos da empresa duplicados executando a seguinte consulta SQL nas tabelas de Projeto do Project Server 2003. A consulta gera uma lista de todos os recursos da empresa duplicados no Pool de Recursos da Empresa.
Consulta 1:
select res_uid, res_name, res_euid from msp_resources where res_name in (select distinct r1.RES_NAME from dbo.MSP_RESOURCES r1 inner join dbo.MSP_RESOURCES r2 on (r1.RES_NAME = r2.RES_NAME and r1.PROJ_ID = r2.PROJ_ID) where r1.PROJ_ID = 1 and r1.RES_UID != r2.RES_UID) and proj_id = 1 order by res_name asc
Se o script encontrar recursos da empresa duplicados, os dados serão exibidos de forma semelhante a este exemplo de dois recursos duplicados.
RES_UID RES_NAME RES_EUID

123

Peter Krebbs

123

124

Peter Krebbs

123

125

Brad Sutton

125

126

Brad Sutton

126

Verificar se há recursos da empresa duplicados em uso nos seus projetos

A consulta SQL a seguir procura recursos da empresa duplicados em uso nos seus projetos. Como faremos referência a essa consulta nas seções seguintes, ela receberá o nome "consulta 2".

Consulta 2:

select  distinct res_name, res_euid from msp_resources where res_name in (select distinct r1.RES_NAME from dbo.MSP_RESOURCES r1 inner join dbo.MSP_RESOURCES r2 on (r1.RES_NAME = r2.RES_NAME and r1.PROJ_ID = r2.PROJ_ID) where r1.PROJ_ID = 1 and r1.RES_UID != r2.RES_UID) and proj_id <> 1 and res_euid is not null  order by res_name, res_euid asc

A execução da consulta gera lista uma lista de recursos da empresa duplicados que são usados nos projetos. Se for exibida apenas uma linha por nome de recurso, execute a consulta 4, localizada na seção "Corrigir recursos de empresa duplicados para apontar o recurso correto". Se forem exibidas mais de uma linha por nome de recurso, execute a consulta 3, localizada na seção "Corrigir projetos que usam recursos da empresa duplicados".

No exemplo a seguir, as instâncias duplicadas de "Brad Sutton" são usadas em projetos, e isso precisa ser corrigido.

RES_NAME RES_EUID

Peter Krebbs

123

Brad Sutton

125

Brad Sutton

126

Corrigir projetos que usam recursos da empresa duplicados

A execução da consulta a seguir (consulta 3) retorna as IDs de projeto que estão associadas a recursos duplicados da empresa. Esse tipo de duplicação deve ser eliminada, para que apenas uma combinação "res_name, res_euid" seja usada nos projetos. Se houver duplicação, designe um dos recursos duplicados como "correto" e verifique se todos os projetos usam esse recurso. (Atualize a coluna MSP_RESOURCES.RES_EUID para que o projeto aponte para o recurso da empresa que você designou como correto). Em seguida, execute a consulta 2 para repetir o teste de verificação dos recursos duplicados da empresa usados em projetos.

Consulta 3: 

select res_name,  res_euid, proj_id from msp_resources where res_name in (select distinct r1.RES_NAME from dbo.MSP_RESOURCES r1 inner join dbo.MSP_RESOURCES r2 on (r1.RES_NAME = r2.RES_NAME and r1.PROJ_ID = r2.PROJ_ID) where r1.PROJ_ID = 1 and r1.RES_UID != r2.RES_UID) and proj_id <> 1 and res_euid is not null order by res_name, res_euid asc

Suponha, por exemplo, que o Script 3 retorne os seguintes resultados:

RES_NAME RES_EUID PROJ_ID

Brad Sutton

125

12

Brad Sutton

126

13

Brad Sutton

125

14

Para corrigir a situação, escolha "Brad Sutton" com RES_EUID=125 como o recurso "correto" da empresa e corrija as linhas, desta forma:

RES_NAME RES_EUID PROJ_ID

Brad Sutton

125

12

Brad Sutton

125

13

Brad Sutton

125

14

Corrigir os recursos da empresa duplicados para apontar para o recurso correto

Na seção anterior, você designou um recurso correto entre os duplicados e corrigiu os projetos para apontar para ele. Agora, será necessário alterar a tabela MSP_RESOURCES de acordo com o recurso designado. Execute a consulta 4 (que é semelhante à consulta 1) para obter uma lista de recursos da empresa duplicados. Em seguida, atualize a coluna RES_EUID para que o recurso duplicado aponte para o recurso designado como correto.

Consulta 4: 

select res_uid, res_name, res_euid from msp_resources where res_name in (select distinct r1.RES_NAME from dbo.MSP_RESOURCES r1 inner join dbo.MSP_RESOURCES r2 on (r1.RES_NAME = r2.RES_NAME and r1.PROJ_ID = r2.PROJ_ID) where r1.PROJ_ID = 1 and r1.RES_UID != r2.RES_UID) and proj_id = 1 order by res_name asc

Suponha que a consulta 4 retorne estes resultados. A linha "Peter Krebbs" está correta. A linha "Brad Sutton" precisa ser corrigida.

RES_UID RES_NAME RES_EUID

123

Peter Krebbs

123

124

Peter Krebbs

123

125

Brad Sutton

125

126

Brad Sutton

126

Para corrigir a situação, escolha "Brad Sutton" com RES_UID=125 como o recurso "correto" e atualize a outra linha para apontar para esse item. Por exemplo:

RES_UID RES_NAME RES_EUID

123

Peter Krebbs

123

124

Peter Krebbs

123

125

Brad Sutton

125

126

Brad Sutton

125

Remover o recurso duplicado do Pool de Recursos da Empresa

É possível remover um recurso duplicado do Pool de Recursos da Empresa apontando o recurso duplicado para um projeto falso (PROJ_ID = valor inteiro máximo). Além disso, é preciso limpar os calendários da empresa relacionados. Execute a consulta 5, para que isso seja feito.

Consulta 5:

update msp_resources set proj_id=2147483647 WHERE res_uid != res_euid and res_euid is not null and res_uid > 0 and proj_id = 1

update msp_calendars set proj_id=2147483647 WHERE res_uid not in (select res_uid from msp_resources where proj_id=1) and proj_id = 1 and cal_uid > 0 and res_uid is not null

Depois de concluir as etapas anteriores, tente executar a ferramenta de migração com a opção –verify novamente, para verificar se o problema de recursos duplicados foi solucionado.

Executar testes manuais para problemas de migração

A execução da ferramenta de migração com a opção -verify permite a verificação automática de problemas nos dados do Project Server 2003 que podem causar falha na migração. Também é possível executar essas verificações (assim como as outras que não estão disponíveis por meio da opção verify) manualmente. A primeira metade deste artigo descreve as verificações automáticas que podem ser executadas. O restante do artigo descreve como executar verificações manuais nos dados do Project Server 2003 para prepará-los para migração.

A versão do projeto deve ser, no mínimo, "Project Server 2003 SP2a"

A Microsoft oferece suporte à migração do Project Server 2003 SP2a. Se você não tem esse service pack instalado, será preciso aplicá-lo. Para obter mais informações sobre o service pack, consulte o artigo da Base de Dados de Conhecimento chamado Descrição do Project Server 2003 Service Pack 2a (https://go.microsoft.com/fwlink/?linkid=78242\&clcid=0x416).

Como procurar o problema

Execute a seguinte consulta SQL no banco de dados "Tabelas da Web do Project Server 2003". Essa consulta informa a versão específica do Project Server, incluindo o número do service pack.

select replace(str(WADMIN_VERSION_MAJOR)+'.'+str(WADMIN_VERSION_MINOR),' ','') as 'Project Server Version' from dbo.MSP_WEB_ADMIN

Resultado de teste bem-sucedido Resultado de teste malsucedido

11.2

11.1

Como corrigir o problema

Aplique o Project Server 2003 SP2a à instalação do Project Server 2003. Para obter mais informações sobre a aplicação do Project Server 2003 SP2a, consulte Preparar a migração para o Project Server 2007.

O modelo global da empresa não deve ser editado externamente

O sinalizador "Editado Externamente" é definido como "verdadeiro" quando o modelo global da empresa for editado fora do Project (por exemplo, por um aplicativo de terceiros). O Project Professional procurará esse sinalizador: caso esteja definido como verdadeiro, o Project Professional recalculará todos os dados do modelo global da empresa para garantir a consistência. Defina o sinalizador como "falso" para permitir a migração.

Como procurar o problema

Execute a seguinte consulta SQL no banco de dados "Tabelas de Projeto do Project Server 2003". Esta consulta procura projetos que foram editados externamente no banco de dados do Project Server 2003. Se houver o retorno de alguma linha, o modelo global da empresa não poderá ser migrado no estado atual.

select PROJ_NAME from dbo.MSP_PROJECTS where (PROJ_EXT_EDITED = 1 or RESERVED_BINARY_DATA is null) and PROJ_TYPE = 2

Resultado de teste bem-sucedido Resultado de teste malsucedido

Nenhuma linha é retornada.

Uma ou mais linhas são retornadas.

Como corrigir o problema

Abra o modelo global da empresa no Project Professional e salve-o novamente.

Determinando se foi feito check-out no modelo global da empresa

O modelo global da empresa não deve estar com check-out durante a migração dos projetos.

Como procurar o problema

A seguinte consulta SQL verifica se foi feito check-out no modelo global da empresa. Execute a seguinte consulta SQL no banco de dados "Tabelas de Projeto do Project Server 2003".

select count(*) from dbo.MSP_PROJECTS where PROJ_CHECKEDOUT = 1 and PROJ_TYPE = 2

Resultado de teste bem-sucedido Resultado de teste malsucedido

0

Um valor maior que "0" é retornado.

Como corrigir o problema

Verifique se foi feito check-in no modelo global da empresa.

  1. No Project Web Access do Project Server 2003, clique em Administrador.

  2. Clique em Gerenciar Recursos do Enterprise.

  3. Clique em Fazer check-in em Projetos da Empresa e veja quem fez check-out no modelo global da empresa. Coordene o check-in ou execute uma operação de check-in forçado no Project Web Access.

Determinando se o modelo global da empresa está bloqueado

Um projeto é bloqueado se o computador for desligado incorretamente ou se o Project Professional agir de forma inesperada. Se o modelo global da empresa estiver bloqueado, a ferramenta de migração não poderá ser executada.

Como procurar o problema

A Consulta SQL a seguir verifica se o arquivo do modelo global da empresa está bloqueado. Execute a seguinte consulta SQL no banco de dados "Tabelas de Projeto do Project Server 2003".

select cast(isnull(PROJ_LOCKED, '0') as int) from dbo.MSP_PROJECTS where PROJ_TYPE = 2

Resultado de teste bem-sucedido Resultado de teste malsucedido

0

1

Como corrigir o problema

A Consulta SQL a seguir desbloqueia o Modelo Global da Empresa. Execute a seguinte consulta SQL no banco de dados "Tabelas de Projeto do Project Server 2003".

Update MSP_PROJECTS set PROJ_LOCKED = 1 where PROJ_TYPE = 2

Determinando se a linguagem padrão nos bancos de dados de tabelas da Web e de tabelas de Projetos coincidem

A linguagem padrão no banco de dados de Tabelas da Web do Project Server 2003 deve coincidir com a linguagem do banco de dados de tabelas de projetos do Project Server 2003, antes da migração.

Como procurar o problema

A consulta determina a linguagem padrão de cada banco de dados. Se os resultados da consulta não coincidirem, haverá falha na migração. Execute a seguinte consulta SQL nos bancos de dados "Tabelas de Projetos do Project Server 2003" e "Tabelas da Web do Project Server 2003".

select WADMIN_DEFAULT_LANGUAGE from dbo.MSP_WEB_ADMIN.

Resultado de teste bem-sucedido Resultado de teste malsucedido

Os resultados coincidem nos dois bancos de dados.

Os resultados não coincidem nos dois bancos de dados.

Como corrigir o problema

Entre em contato com o administrador para corrigir o estado de inconsistência entre os dois bancos de dados.

Determinando se um recurso tem uma vírgula no nome

O Office Project Server 2007 tem uma limitação que não permite que um Recurso da Empresa (em qualquer idioma) tenha um caractere de vírgula (,) no nome. O caractere deve ser substituído por um caractere válido.

Como procurar o problema

A consulta a seguir procura no Pool de Recursos da Empresa nomes de recursos que contêm o caractere de vírgula. Execute a seguinte consulta SQL no banco de dados "Tabelas de Projeto do Project Server 2003".

select RES_NAME from MSP_RESOURCES where RES_NAME is not null and charindex(',', RES_NAME) > 0

Resultado de teste bem-sucedido Resultado de teste malsucedido

Nenhuma linha é retornada.

Uma ou mais linhas são retornadas.

Como corrigir o problema

Execute a seguinte consulta SQL nos bancos de dados "Tabelas de Projetos do Project Server 2003" e "Tabelas da Web do Project Server 2003". A consulta substitui o caractere de vírgula por um caractere de sublinhado. Se desejar usar outro caractere válido, é possível editar a consulta.

-- run this against the project tables db

declare @replacement_char char

declare @char_to_replace char

set @replacement_char = '_'

set @char_to_replace = ','

update dbo.MSP_RESOURCES set RES_NAME = replace(RES_NAME, @char_to_replace, @replacement_char)

where RES_NAME is not null and charindex(@char_to_replace, RES_NAME) > 0

-- run this against the web tables db

declare @replacement_char char

declare @char_to_replace char

set @replacement_char = '_'

set @char_to_replace = ','

update dbo.MSP_WEB_RESOURCES set RES_NAME = replace(RES_NAME, @char_to_replace, @replacement_char)

where RES_NAME is not null and charindex(@char_to_replace, RES_NAME) > 0

Determinando se há campos personalizados obrigatórios sem valores no recurso da empresa

Os recursos da empresa que não têm um valor em um campo personalizado obrigatório (como o EDR), não poderão ser migrados. Um erro será exibido no log de migração durante a migração. Recomendamos que você verifique esse cenário antes da migração. Se os recursos da empresa forem muito antigos (criados antes do campo personalizado ter se tornado "Obrigatório") ou inativos, eles podem não ter valores nos campos personalizados obrigatórios.

Uma forma de corrigir essa situação é definindo todos os campos personalizados do recurso no Office Project Server 2007 como Opcional. Você pode alterá-los novamente no Office Project Server 2007, manualmente.

Há dois métodos de verificação para encontrar os campos personalizados que causaram o problema na migração.

  • O método de verificação 1 usa uma consulta SQL no banco de dados "Tabelas de Projetos do Project Server 2003".

  • O método de verificação 2 usa a interface do usuário do Project Professional 2003.

Como procurar o problema usando o método de verificação 1

A consulta SQL a seguir retorna os recursos da empresa que têm campos personalizados obrigatórios da empresa sem valores. Execute a seguinte consulta SQL no banco de dados "Tabelas de Projeto do Project Server 2003".

declare @eglobal_proj_id int

set @eglobal_proj_id = (select PROJ_ID from dbo.MSP_PROJECTS where PROJ_TYPE = 2)

select

   r1.RES_NAME as 'Resource Name',

   ast1.AS_VALUE as 'Custom Field Name'

from

   dbo.MSP_RESOURCES r1

   inner join dbo.MSP_CODE_FIELDS cf1 on (r1.RES_UID = cf1.CODE_REF_UID)

   inner join dbo.MSP_FIELD_ATTRIBUTES fa1 on (cf1.CODE_FIELD_ID = fa1.ATTRIB_FIELD_ID)

   inner join dbo.MSP_ATTRIBUTE_STRINGS ast1 on (fa1.AS_ID = ast1.AS_ID)

   inner join dbo.MSP_OUTLINE_CODES oc3 on (cf1.CODE_UID = oc3.CODE_UID and oc3.PROJ_ID = @eglobal_proj_id)

   left join dbo.MSP_OUTLINE_CODES oc1 on (oc1.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc1.OC_FIELD_ID and oc1.PROJ_ID = @eglobal_proj_id)

   left join (

      select

         oc.CODE_UID,

         fa.ATTRIB_FIELD_ID as OC_FIELD_ID,

         @eglobal_proj_id as PROJ_ID

      from

         dbo.MSP_OUTLINE_CODES oc

         inner join dbo.MSP_FIELD_ATTRIBUTES fa on (fa.PROJ_ID = oc.PROJ_ID and fa.ATTRIB_VALUE = oc.OC_FIELD_ID and fa.ATTRIB_ID = 212)

      where

         oc.PROJ_ID = @eglobal_proj_id

         and fa.PROJ_ID = @eglobal_proj_id

         and fa.ATTRIB_ID = 212

   ) as oc2 on (oc2.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc2.OC_FIELD_ID and oc2.PROJ_ID = @eglobal_proj_id)

where

   r1.PROJ_ID = 1

   and cf1.proj_id = 1

   and fa1.PROJ_ID = @eglobal_proj_id

   and fa1.ATTRIB_ID = 206

   and ast1.PROJ_ID = @eglobal_proj_id

   and oc3.PROJ_ID = @eglobal_proj_id

   and oc1.CODE_UID is null

   and oc2.CODE_UID is null

order by

   r1.RES_NAME,

   ast1.AS_VALUE

Resultado de teste bem-sucedido Resultado de teste malsucedido

Nenhuma linha é retornada.

Uma ou mais linhas são retornadas.

Como corrigir o problema

No Project Server 2003, abra o pool de recursos da empresa e defina os valores dos campos personalizados obrigatórios ou defina os campos personalizados afetados como "Opcional".

Como procurar o problema usando o método de verificação 2

Esse método requer o uso do Project Professional 2003 para abrir o Pool de Recursos da Empresa. Ao tentar salvar o Pool de Recursos da Empresa, você verificará se todos os recursos da empresa selecionados têm valores em seus campos personalizados obrigatórios.

  1. Abra o Project Professional 2003 conectado ao servidor do Project Server 2003.

  2. No menu Ferramentas , clique em Opções da Empresa e em Abrir pool de recursos da empresa.

  3. Na caixa de diálogo Abrir Recursos da Empresa exibida, marque a caixa de seleção Incluir recursos inativos. Verifique se a opção Leitura/gravação para check-out está selecionada. Clique no botão Aplicar filtro.

  4. Clique no botão Selecionar/Cancelar seleção de todos para que todos os recursos sejam selecionados.

  5. Clique no botão Abrir/Adicionar. Quando os recursos estiverem abertos para a edição, clique em Salvar. O Project Professional validará se os recursos da empresa (ativos ou inativos) têm valores nos campos personalizados obrigatórios.

    Resultado de teste bem-sucedido Resultado de teste malsucedido

    Depois de salvar, nenhuma mensagem de erro será exibida.

    Uma mensagem de erro é exibida, listando erros em recursos que não têm valores em campos personalizados obrigatórios.

Como corrigir o problema

No Project Server 2003, defina valores nos campos personalizados obrigatórios ou defina os campos personalizados afetados como Opcional.

Determinando se um campo personalizado do recurso tem um valor que não está na definição da tabela de pesquisa

Todos os valores nos campos personalizados de um recurso devem estar na tabela de definição de pesquisa.

Como procurar o problema

A consulta SQL a seguir procura campos personalizados inválidos do recurso, verificando se o valor do campo personalizado está na tabela de pesquisa correspondente.

Execute a seguinte consulta SQL nos bancos de dados "Tabelas de Projetos do Project Server 2003" e "Tabelas da Web do Project Server 2003".

declare @eglobal_proj_id int

set @eglobal_proj_id = (select PROJ_ID from dbo.MSP_PROJECTS where PROJ_TYPE = 2)

select

   r1.RES_NAME,

   ast1.AS_VALUE

from

   dbo.MSP_RESOURCES r1

   inner join dbo.MSP_CODE_FIELDS cf1 on (r1.RES_UID = cf1.CODE_REF_UID)

   inner join dbo.MSP_FIELD_ATTRIBUTES fa1 on (cf1.CODE_FIELD_ID = fa1.ATTRIB_FIELD_ID)

   inner join dbo.MSP_ATTRIBUTE_STRINGS ast1 on (fa1.AS_ID = ast1.AS_ID)

   left join dbo.MSP_OUTLINE_CODES oc1 on (oc1.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc1.OC_FIELD_ID and oc1.PROJ_ID = @eglobal_proj_id)

   left join (

      select

         oc.CODE_UID,

         fa.ATTRIB_FIELD_ID as OC_FIELD_ID,

         @eglobal_proj_id as PROJ_ID

      from

         dbo.MSP_OUTLINE_CODES oc

         inner join dbo.MSP_FIELD_ATTRIBUTES fa on (fa.PROJ_ID = oc.PROJ_ID and fa.ATTRIB_VALUE = oc.OC_FIELD_ID and fa.ATTRIB_ID = 212)

      where

         oc.PROJ_ID = @eglobal_proj_id

         and fa.PROJ_ID = @eglobal_proj_id

         and fa.ATTRIB_ID = 212

   ) as oc2 on (oc2.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc2.OC_FIELD_ID and oc2.PROJ_ID = @eglobal_proj_id)

where

   r1.PROJ_ID = 1

   and cf1.proj_id = 1

   and cf1.code_uid is not null

   and fa1.PROJ_ID = @eglobal_proj_id

   and fa1.ATTRIB_ID = 206

   and ast1.PROJ_ID = @eglobal_proj_id

   and oc1.CODE_UID is null

   and oc2.CODE_UID is null

union

select

   r1.RES_NAME,

   ast1.AS_VALUE

from

   dbo.MSP_RESOURCES r1

   inner join dbo.MSP_MV_FIELDS cf1 on (r1.RES_UID = cf1.CODE_REF_UID)

   inner join dbo.MSP_FIELD_ATTRIBUTES fa1 on (cf1.CODE_FIELD_ID = fa1.ATTRIB_FIELD_ID)

   inner join dbo.MSP_ATTRIBUTE_STRINGS ast1 on (fa1.AS_ID = ast1.AS_ID)

   left join dbo.MSP_OUTLINE_CODES oc1 on (oc1.CODE_UID = cf1.CODE_UID and (cf1.CODE_FIELD_ID - 76) = oc1.OC_FIELD_ID and oc1.PROJ_ID = @eglobal_proj_id)

   left join (

      select

         oc.CODE_UID,

         fa.ATTRIB_FIELD_ID as OC_FIELD_ID,

         @eglobal_proj_id as PROJ_ID

      from

         dbo.MSP_OUTLINE_CODES oc

         inner join dbo.MSP_FIELD_ATTRIBUTES fa on (fa.PROJ_ID = oc.PROJ_ID and fa.ATTRIB_VALUE = oc.OC_FIELD_ID and fa.ATTRIB_ID = 212)

      where

         oc.PROJ_ID = @eglobal_proj_id

         and fa.PROJ_ID = @eglobal_proj_id

         and fa.ATTRIB_ID = 212

   ) as oc2 on (oc2.CODE_UID = cf1.CODE_UID and (cf1.CODE_FIELD_ID - 76) = oc2.OC_FIELD_ID and oc2.PROJ_ID = @eglobal_proj_id)

where

   r1.PROJ_ID = 1

   and cf1.proj_id = 1

   and cf1.code_uid is not null

   and fa1.PROJ_ID = @eglobal_proj_id

   and fa1.ATTRIB_ID = 206

   and ast1.PROJ_ID = @eglobal_proj_id

   and oc1.CODE_UID is null

   and oc2.CODE_UID is null

order by

   r1.RES_NAME,

   ast1.AS_VALUE

Resultado de teste bem-sucedido Resultado de teste malsucedido

Nenhuma linha é retornada.

Uma ou mais linhas são retornadas.

Como corrigir o problema

A consulta SQL a seguir define valores do campo personalizado do recurso como nulo. Execute a seguinte consulta SQL no banco de dados "Tabelas de Projeto do Project Server 2003".

declare @eglobal_proj_id int

set @eglobal_proj_id = (select PROJ_ID from dbo.MSP_PROJECTS where PROJ_TYPE = 2)

update dbo.MSP_MV_FIELDS

set

   CODE_UID = NULL

from dbo.MSP_MV_FIELDS cf1

   left join dbo.MSP_OUTLINE_CODES oc1 on (oc1.CODE_UID = cf1.CODE_UID and (cf1.CODE_FIELD_ID - 76) = oc1.OC_FIELD_ID and oc1.PROJ_ID = @eglobal_proj_id)

   left join (

      select

         oc.CODE_UID,

         fa.ATTRIB_FIELD_ID as OC_FIELD_ID,

         @eglobal_proj_id as PROJ_ID

      from

         dbo.MSP_OUTLINE_CODES oc

         inner join dbo.MSP_FIELD_ATTRIBUTES fa on (fa.PROJ_ID = oc.PROJ_ID and fa.ATTRIB_VALUE = oc.OC_FIELD_ID and fa.ATTRIB_ID = 212)

      where

         oc.PROJ_ID = @eglobal_proj_id

         and fa.PROJ_ID = @eglobal_proj_id

         and fa.ATTRIB_ID = 212

   ) as oc2 on (oc2.CODE_UID = cf1.CODE_UID and (cf1.CODE_FIELD_ID - 76) = oc2.OC_FIELD_ID and oc2.PROJ_ID = @eglobal_proj_id)

where

   cf1.proj_id = 1

   and oc1.CODE_UID is null

   and oc2.CODE_UID is null

update dbo.MSP_CODE_FIELDS

set

   CODE_UID = NULL

from dbo.MSP_CODE_FIELDS cf1

   left join dbo.MSP_OUTLINE_CODES oc1 on (oc1.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc1.OC_FIELD_ID and oc1.PROJ_ID = @eglobal_proj_id)

   left join (

      select

         oc.CODE_UID,

         fa.ATTRIB_FIELD_ID as OC_FIELD_ID,

         @eglobal_proj_id as PROJ_ID

         from

         dbo.MSP_OUTLINE_CODES oc

         inner join dbo.MSP_FIELD_ATTRIBUTES fa on (fa.PROJ_ID = oc.PROJ_ID and fa.ATTRIB_VALUE = oc.OC_FIELD_ID and fa.ATTRIB_ID = 212)

      where

         oc.PROJ_ID = @eglobal_proj_id

         and fa.PROJ_ID = @eglobal_proj_id

         and fa.ATTRIB_ID = 212

   ) as oc2 on (oc2.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc2.OC_FIELD_ID and oc2.PROJ_ID = @eglobal_proj_id)

where

   cf1.proj_id = 1

   and oc1.CODE_UID is null

   and oc2.CODE_UID is null

update dbo.MSP_PROJECTS set PROJ_EXT_EDITED = 1, PROJ_EXT_EDITED_CODE = 1 where PROJ_ID = 1

Determinando se recursos da empresa são editados externamente

Para que os recursos da empresa possam ser migrados do Project Server 2003 para o Project Server 2007, eles não podem ser editados externamente.

Como procurar o problema

A consulta a seguir procura recursos da empresa no Pool de Recursos da Empresa que foram editados externamente. Se os resultados do teste não apresentarem êxito, o Pool de Recursos da Empresa não poderá ser migrado no estado atual. Execute a seguinte consulta SQL no banco de dados "Tabelas de Projeto do Project Server 2003".

select count(*) from dbo.MSP_RESOURCES  where PROJ_ID = 1 and  cast(EXT_EDIT_REF_DATA as varchar(1)) = '1'

Resultado de teste bem-sucedido Resultado de teste malsucedido

0

Um valor maior que "0" é retornado.

Como corrigir o problema

Para corrigir esse problema, defina todos os Recursos da Empresa como editados externamente, por meio de uma consulta SQL. Em seguida, altere cada Recurso da Empresa para que todas as atualizações relevantes sejam feitas pelo Project Professional quando o Pool de Recursos da Empresa for salvo. Esse processo remove o sinalizador "editado externamente" dos recursos da Empresa. Se algum recurso da Empresa não for alterado, nenhum cálculo será realizado novamente para esse recurso pelo Project Professional. Esse recurso da empresa específico continuará sendo sinalizado como editado externamente, e o Pool de Recursos da Empresa não poderá ser migrado.

NoteObservação:
Depois da migração do Pool de Recursos da Empresa, as alterações realizadas em cada Recurso da Empresa poderão ser removidas.

Você pode usar a seguinte solução alternativa geral para remover todos os sinalizadores de edição externa dos Recursos da Empresa.

  1. Defina todos os recursos da empresa como editados externamente. Isso pode ser feito pela execução da seguinte consulta SQL nos bancos de dados "Tabelas de Projetos do Project Server 2003".

    Update dbo.MSP_RESOURCES set EXT_EDIT_REF_DATA = 1 where PROJ_ID = 1

    Update dbo.MSP_PROJECTS set PROJ_EXT_EDITED = 1, PROJ_EXT_EDITED_DATE = 1, PROJ_EXT_EDITED_DUR = 1, PROJ_EXT_EDITED_NUM = 1, PROJ_EXT_EDITED_FLAG = 1, PROJ_EXT_EDITED_CODE = 1, PROJ_EXT_EDITED_TEXT = 1 where PROJ_ID = 1

  2. Adicione temporariamente um campo personalizado secundário a cada Recurso da Empresa para forçar a execução de recálculos pelo Project Professional 2003. Os recálculos forçados não marcarão mais nenhum Recurso da Empresa como editado externamente. Por exemplo, no Project Professional 2003, você pode criar um campo personalizado de recurso de "teste", que será adicionado a cada Recurso da Empresa. Qualquer tipo de campo personalizado pode ser utilizado, como um campo personalizado de Duração do Recurso, que é usado com frequência.

    NoteObservação:
    Se você usar um campo personalizado de Duração do Recurso da Empresa, não crie uma lista de valores para ele. Os campos personalizados de Duração do Recurso da Empresa não serão migrados. Use um valor numérico para a criação desse campo personalizado temporário.

    O novo campo personalizado pode ser chamado de "Test Resource CF" (CP de Recurso de Teste). Depois de criar o campo personalizado do "Test Resource CF", abra o Pool de Recursos da Empresa e adicione a coluna "Test Resource CF". Defina um valor válido para esse campo personalizado para todos os recursos. Salve o Pool de Recursos da Empresa e execute a migração. Após a migração, remova o campo personalizado no Microsoft Office Project Professional 2007.

Determinando se há campos personalizados na Duração do Recurso da Empresa com listas de valores

Os campos personalizados de Duração do Recurso da Empresa com listas de valores associadas causarão falha na migração.

Como procurar o problema

A consulta SQL a seguir verifica se há campos personalizados de Duração do Recurso da Empresa com listas de valores associados. Execute esta consulta SQL no banco de dados "Tabelas de Projetos do Project Server 2003".

declare @proj_id int

set @proj_id = (select proj_id from msp_projects where proj_type = 2)

select ats.as_value as CustomFieldName from msp_attribute_strings ats

inner join msp_field_attributes fa on (fa.proj_id = ats.proj_id and fa.as_id = ats.as_id)

where fa.attrib_id = 206 and fa.proj_id = @proj_id and fa.attrib_field_id >= 205521382 and fa.attrib_field_id <= 205521391

and exists (select * from msp_field_attributes fa2 where fa2.proj_id = fa.proj_id and fa2.attrib_field_id = fa.attrib_field_id and fa2.attrib_id = 210)

Resultado de teste bem-sucedido Resultado de teste malsucedido

Nenhuma linha é retornada.

Uma ou mais linhas são retornadas. Esses campos personalizados de Duração do Recurso da Empresa têm listas de valores associadas. A lista de valores deve ser removida manualmente de cada recurso.

Como corrigir o problema

Para corrigir o problema, remova manualmente as listas de valores de cada campo personalizado de Duração do Recurso da Empresa encontrado na consulta SQL. Isso pode ser feito com o seguinte procedimento.

  1. Abra o Project Professional 2003 conectado ao servidor do Project Server 2003.

  2. No menu Ferramentas , aponte para Opções da Empresa e clique em Abrir Modelo Global da Empresa.

  3. Na página Modelo Global da Empresa com Check-out no Microsoft Project, vá para o menu Ferramentas, aponte para Personalizar e clique em Campos da Empresa.

  4. Na página Campos Personalizados da Empresa, na guia Campos Personalizados, vá para a seção Campos e clique em Recurso.

  5. Na lista suspensa Tipo, clique em Duração. Todos os campos personalizados de Duração da Empresa serão exibidos na lista Campo.

  6. Na lista Campo, selecione o primeiro campo personalizado de Duração do Recurso da Empresa que corresponde aos campos retornados na consulta SQL executada anteriormente. Na seção Atributos Personalizados, clique no botão Lista de Valores. Na lista de valores para o campo personalizado específico de Duração da Empresa, exclua todos os valores da coluna Valor e clique em OK. Na caixa de diálogo do Microsoft Office que é exibida, clique em OK.

  7. Na página Personalizar campos da empresa, na seção Atributos Personalizados, verifique se a opção Lista de Valores não esteja selecionada para o campo personalizado de Duração do Recurso da Empresa selecionado na lista Campo. Se a opção Lista de Valores estiver marcada, selecione Nenhum.

  8. Na lista Campo, selecione todos os campos personalizados de Duração do Recurso da Empresa restantes, que correspondam à consulta SQL, e repita as etapas 6 e 7.

  9. Clique em OK.

Determinando se os campos personalizados de Duração do Recurso da Empresa contêm valores válidos

O Office Project Server 2007 não permite valores de duração negativos ou valores de duração maiores que 34689600, o que causa falha na migração dos campos personalizados de Duração do Recurso da Empresa no Project Server 2003.

Como procurar o problema

Para procurar o problema, execute a seguinte consulta SQL no banco de dados "Tabelas de Projetos do Project Server 2003". Esta consulta retornará os campos personalizados de Duração do Recurso da Empresa com valores inválidos.

select r.res_name, mas.as_value from msp_resources r

inner join msp_duration_fields df on (df.dur_ref_uid = r.res_euid and df.proj_id = r.proj_id)

inner join msp_projects p on (p.proj_type = 2)

inner join msp_field_attributes fa on (fa.proj_id = p.proj_id and fa.attrib_field_id = df.dur_field_id)

inner join msp_attribute_strings mas on (mas.proj_id = p.proj_id and fa.as_id = mas.as_id)

where (dur_value < 0 or dur_value > 34689600) and df.proj_id = 1 and p.proj_type = 2 and fa.attrib_id = 206

Resultado de teste bem-sucedido Resultado de teste malsucedido

Nenhuma linha é retornada.

Uma ou mais linhas são retornadas.

Como corrigir o problema

Para corrigir o problema, edite manualmente o valor do campo personalizado de Duração do Recurso da Empresa de cada campo personalizado identificado. Verifique se os valores do campo são válidos (entre 0 e 34689600).

Se o campo identificado pela consulta for um campo personalizado simples (e não um campo de fórmula), você poderá alterar o valor do campo para que fique dentro do intervalo permitido. Se o campo identificado pela consulta for um campo de fórmula, será preciso alterar a fórmula para que o resultado esteja de acordo com o intervalo válido.

Determinando se os nomes de campos personalizados da empresa não contêm espaços à direita ou à esquerda

Verifique se os nomes nos campos personalizados no Office Project Server 2007 não contêm espaços à direita ou à esquerda (por exemplo, __Campo Personalizado_ (o caractere de sublinhado representa um caractere de espaço). Haverá falha com erro na migração, se você tentar migrar campos personalizados com caracteres de espaço à direita ou à esquerda.

Determinando se a Conta de Administrador de Migração existe no Project Server 2003

Se a "Conta de Administrador de Migração" existir no Project Server 2003 (por nome ou por Conta do Windows), as permissões de usuário, mapeamentos de categoria e propriedades de usuários não serão migrados para o Office Project Server 2007. Em resumo, o usuário do Office Project Server 2007 tem prioridade. Se a "Conta de Administrador de Migração" for usada em projetos, esses recursos não serão substituídos pela "Conta de Administrador de Migração".

Substituindo caracteres de vírgula em nomes de recursos da empresa

Se os bancos de dados do Project Server 2003 tiverem nomes de recursos da empresa que contêm um caractere de vírgula, haverá falha na migração do recurso. Isso pode ser um problema para clientes em determinados locais onde o uso do caractere de vírgula em nomes de recursos seja uma prática comum.

Como corrigir o problema

Use as seguintes consultas SQL para substituir cada caractere de vírgula por um caractere de sublinhado neutro.

Execute esta consulta no banco de dados de tabelas do Project:

declare @replacement_char char

declare @char_to_replace char

set @replacement_char = '_'

set @char_to_replace = ','

update dbo.MSP_RESOURCES set RES_NAME = replace(RES_NAME, @char_to_replace, @replacement_char)

where RES_NAME is not null and charindex(@char_to_replace, RES_NAME) > 0

Execute esta consulta no banco de dados de tabelas da Web:

declare @replacement_char char

declare @char_to_replace char

set @replacement_char = '_'

set @char_to_replace = ','

update dbo.MSP_WEB_RESOURCES set RES_NAME = replace(RES_NAME, @char_to_replace, @replacement_char)

where RES_NAME is not null and charindex(@char_to_replace, RES_NAME) > 0