Condividi tramite


Verifica e pulitura prima della migrazione

Aggiornamento: maggio 2009

 

Ultima modifica dell'argomento: 2015-02-27

Contenuto dell'articolo:

  • Eseguire lo strumento di migrazione con l'opzione -verify

  • Eseguire test manuali per problemi di migrazione

In questo articolo viene descritto come verificare che i dati di origine di Microsoft Office Project Server 2003 di cui si desidera eseguire la migrazione siano validi per la migrazione a Microsoft Office Project Server 2007. Nell'articolo vengono illustrati gli strumenti utili per verificare che i dati di cui si desidera eseguire la migrazione siano validi e non danneggiati. Tali strumenti includono l'opzione -verify dello strumento di migrazione e le query SQL da eseguire nei database di Project Server 2003. Vengono inoltre descritti i controlli generali da eseguire nell'ambiente di Project Server 2003 prima della migrazione.

ImportantImportante:
A seconda delle dimensioni del database in uso, la migrazione può richiedere molto tempo. Per ulteriori informazioni, vedere Migration performance data for Project Server 2007. Se la migrazione globale dei dati viene interrotta, ad esempio per la presenza di risorse dell'organizzazione duplicate, è necessario risolvere la causa del problema e ripetere il processo dall'inizio. Se si eseguono la verifica e la pulitura dei dati prima di avviare la migrazione, è possibile ridurre notevolmente la possibilità di errori dello strumento di migrazione.

Eseguire lo strumento di migrazione con l'opzione -verify

L'opzione -verify dello strumento di migrazione esamina i dati di Project Server 2003 per rilevare gli elementi seguenti:

  • Progetti estratti

  • Progetti che sono stati modificati esternamente

  • Progetti con aggiornamenti dello stato in sospeso

  • Risorse dell'organizzazione duplicate

Lo strumento di migrazione determina se è necessario apportare modifiche ai dati per renderli adatti per la migrazione. Tali modifiche vengono scritte nel file di registro della migrazione, ma non vengono implementate automaticamente.

Si noti che l'opzione -verify non è l'unico insieme di controlli da eseguire sui dati. È necessario infatti eseguire le altre procedure di verifica descritte in questo articolo affinché i dati siano validi per la migrazione.

Leggere il file di registro generato e apportare le modifiche necessarie ai dati di Project Server 2003 per eliminare i problemi che possono verificarsi durante la migrazione dei dati.

[!NOTA] L'esecuzione dello strumento di migrazione con l'opzione -verify non implica la migrazione di dati globali o di progetto, anche se il file di configurazione della migrazione è impostato per questa operazione.

Determinare se sono presenti progetti estratti

Non è possibile eseguire la migrazione di un progetto estratto. È buona regola fare in modo che i dati si trovino in uno stato stabile prima della migrazione e l'archiviazione dei progetti assicura che questi si trovino in tale stato. I coordinatori della migrazione potrebbero stabilire una scadenza per i project manager per archiviare i progetti e forzare l'archiviazione di tutti i progetti oltre tale data.

Come controllare il problema

Se un progetto di cui si desidera eseguire la migrazione risulta estratto quando si esegue lo strumento di migrazione con l'opzione -verify, nella console e nel registro verrà visualizzato il messaggio seguente:

I progetti seguenti risultano estratti e non verranno considerati dallo strumento di migrazione (lo strumento non verrà interrotto, ma ignorerà semplicemente questi progetti). Archiviare i progetti.

Risultato del test riuscito Risultato del test non riuscito

Il messaggio precedente non verrà visualizzato se tutti i progetti sono archiviati.

Il messaggio precedente verrà visualizzato, seguito dai nomi dei progetti. Ogni nome di progetto verrà visualizzato su una riga distinta.

Come correggere il problema

Archiviare tutti i progetti estratti.

Archiviare i progetti estratti in Project Server 2003

  1. In Project Server 2003 Project Web Access fare clic su Amministrazione.

  2. Fare clic su Gestisci funzionalità dell'organizzazione.

  3. Fare clic su Archiviazione progetti dell'organizzazione per visualizzare i progetti estratti. Coordinare l'archiviazione o eseguire un'operazione di archiviazione forzata da Project Web Access.

[!NOTA] È inoltre possibile verificare i progetti estratti eseguendo la query SQL seguente nei database "Project Server 2003 Project tables" e "Project Server 2003 Web Tables".
select PROJ_NAME from dbo.MSP_PROJECTS where PROJ_CHECKEDOUT = 1 and PROJ_TYPE in (0, 1)
Se vengono restituiti risultati, i progetti indicati risultano estratti.

Determinare se i progetti sono stati modificati esternamente

Non è possibile eseguire la migrazione di un progetto se è stato modificato esternamente.

Come controllare il problema

Quando si esegue lo strumento di migrazione con l'opzione -verify, se un progetto di cui si desidera eseguire la migrazione è stato modificato esternamente, nella console e nel registro verrà visualizzato il messaggio seguente:

I progetti seguenti sono stati modificati esternamente e non verranno considerati dallo strumento di migrazione (lo strumento non verrà interrotto, ma ignorerà semplicemente questi progetti). Aprirli in Project Professional 2003 e salvarli nuovamente in Project Server 2003.

Risultato del test riuscito Risultato del test non riuscito

Il messaggio precedente non verrà visualizzato se tutti i progetti non sono stati modificati esternamente.

Il messaggio precedente verrà visualizzato, seguito dai nomi dei progetti. Ogni nome di progetto verrà visualizzato su una riga distinta.

Come correggere il problema

Aprire il progetto modificato esternamente in Project Professional 2003, salvarlo e archiviarlo nuovamente nel server. Questa azione imposta il flag Externally edited su false.

[!NOTA] È inoltre possibile verificare i progetti modificati esternamente eseguendo la query SQL seguente nei database "Project Server 2003 Project tables" e "Project Server 2003 Web Tables".
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 vengono restituite righe di risultati, i progetti indicati risultano modificati esternamente.

Determinare se i progetti hanno aggiornamenti dello stato in sospeso

Per impostazione predefinita, se i progetti di Project Server 2003 hanno aggiornamenti in sospeso, non ne viene eseguita la migrazione a Office Project Server 2007. Prima di eseguire la migrazione, è necessario che gli utenti accettino o rifiutino gli aggiornamenti dello stato per garantire uno stato stabile per i progetti di cui eseguire la migrazione.

Come controllare il problema

Se un progetto ha aggiornamenti dello stato in sospeso quando si esegue lo strumento di migrazione con l'opzione -verify, nella console e nel registro verrà visualizzato il messaggio seguente:

I progetti seguenti hanno aggiornamenti dello stato in sospeso e non verranno considerati dallo strumento di migrazione (lo strumento non verrà interrotto, ma ignorerà semplicemente questi progetti). Applicare gli aggiornamenti in sospeso.

Risultato del test riuscito Risultato del test non riuscito

Il messaggio precedente non verrà visualizzato se tutti i progetti non hanno aggiornamenti dello stato in sospeso.

Il messaggio precedente verrà visualizzato, seguito dai nomi dei progetti. Ogni nome di progetto verrà visualizzato su una riga distinta.

Come correggere il problema

Il parametro StopProjectMigrationIfStatusUpdatesPending del file di configurazione della migrazione può essere configurato in modo da consentire la migrazione di progetti con aggiornamenti in sospeso. Per ulteriori informazioni su questo parametro, vedere Configurazione dello strumento di migrazione per Project Server.

Come procedura consigliata da eseguire prima della migrazione, è possibile stabilire una scadenza entro la quale i project manager dovranno accettare o rifiutare gli aggiornamenti dello stato in sospeso. Oltre tale data sarà possibile forzare la migrazione di tutti i progetti, anche se lo stato non è stato aggiornato.

[!NOTA] È inoltre possibile controllare i progetti con aggiornamenti dello stato in sospeso eseguendo la query SQL seguente nel database "Project Server 2003 Web Tables".
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 vengono restituiti risultati, i progetti indicati hanno aggiornamenti dello stato in sospeso.

Determinare se vi sono risorse dell'organizzazione duplicate

La presenza di più risorse con lo stesso nome nel pool delle risorse dell'organizzazione non è supportata in Project 2003 o 2007. Se si verifica questa situazione, potrebbe essere il risultato di modifiche dirette del database. Si noti che i nomi duplicati potrebbero non essere visualizzati in Project Professional quando si modifica il pool di risorse dell'organizzazione. Ciò si verifica perché potrebbe esistere una sola voce nella tabella MSP_WEB_RESOURCES per una risorsa dell'organizzazione con questo nome. Non è semplice risolvere questo problema ed è consigliabile chiedere aiuto al proprio esperto di Project Server. Di seguito sono riportate alcune istruzioni utili per rilevare e correggere problemi che si verificano quando sono presenti risorse dell'organizzazione duplicate.

Come controllare il problema

Se sono presenti risorse dell'organizzazione duplicate quando si esegue lo strumento di migrazione con l'opzione -verify, nella console e nel registro verrà visualizzato il messaggio seguente:

Il pool di risorse dell'organizzazione contiene voci duplicate per le risorse seguenti. Questo scenario non è supportato in Project 2003 e può provocare errori nella migrazione delle risorse dell'organizzazione. Verificare che non siano presenti risorse duplicate prima di avviare la migrazione.

Risultato del test riuscito Risultato del test non riuscito

Il messaggio precedente non verrà visualizzato se non sono presenti risorse dell'organizzazione duplicate.

Il messaggio precedente verrà visualizzato, seguito dai nomi delle risorse. Ogni nome di risorsa verrà visualizzato su una riga distinta.

[!NOTA] È inoltre possibile verificare la presenza di risorse dell'organizzazione duplicate eseguendo la query SQL seguente nel database "Project Server 2003 Project tables". Tale query genera un elenco di tutte le risorse dell'organizzazione duplicate presenti nel pool di risorse dell'organizzazione.
Query 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 lo script rileva risorse dell'organizzazione duplicate, i dati verranno visualizzati in modo analogo al seguente esempio di due risorse duplicate.

RES_UID RES_NAME RES_EUID

123

Barbara Zighetti

123

124

Barbara Zighetti

123

125

Angela Barbariol

125

126

Angela Barbariol

126

Controllare la presenza di risorse dell'organizzazione duplicate utilizzate nei progetti

La query SQL seguente rileva le risorse dell'organizzazione duplicate utilizzate nei progetti. Poiché più avanti si farà riferimento a questa query nelle sezioni che seguono, verrà denominata "query 2".

Query 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

Dall'esecuzione della query si ottiene un elenco delle risorse dell'organizzazione duplicate utilizzate nei progetti. Se viene visualizzata una sola riga per ogni nome di risorsa, eseguire la query 4 descritta nella sezione "Correggere le risorse dell'organizzazione duplicate in modo che facciano riferimento alla risorsa corretta". Se sono presenti più righe per ogni nome di risorsa, eseguire la query 3 descritta nella sezione "Correggere i progetti che utilizzano risorse dell'organizzazione duplicate".

Nell'esempio seguente si noti che nei progetti vengono utilizzate istanze duplicate di 'Angela Barbariol'. Questo problema deve essere risolto.

RES_NAME RES_EUID

Barbara Zighetti

123

Angela Barbariol

125

Angela Barbariol

126

Correggere i progetti che utilizzano risorse dell'organizzazione duplicate

L'esecuzione della query seguente (query 3) restituisce gli ID di progetto associati alle risorse dell'organizzazione duplicate. È necessario eliminare questo tipo di duplicazione in modo che nei progetti venga utilizzata una sola combinazione di "RES_NAME, RES_EUID". Se esistono duplicati, è necessario designare uno dei duplicati come la risorsa "corretta" e assicurarsi che tutti i progetti utilizzino questa risorsa. (Aggiornare la colonna MSP_RESOURCES.RES_EUID per il progetto in modo che faccia riferimento alla risorsa dell'organizzazione che è stata designata come corretta). Eseguire quindi la query 2 per ripetere il test di verifica delle risorse dell'organizzazione duplicate utilizzate nei progetti.

Query 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

Si supponga ad esempio che l'esecuzione dello script 3 restituisca i risultati seguenti:

RES_NAME RES_EUID PROJ_ID

Angela Barbariol

125

12

Angela Barbariol

126

13

Angela Barbariol

125

14

Per correggere la situazione, è possibile scegliere 'Angela Barbariol' con RES_EUID=125 come risorsa dell'organizzazione "corretta" e correggere le righe come segue:

RES_NAME RES_EUID PROJ_ID

Angela Barbariol

125

12

Angela Barbariol

125

13

Angela Barbariol

125

14

Correggere le risorse dell'organizzazione duplicate in modo che facciano riferimento alla risorsa corretta

Nella sezione precedente è stata designata una risorsa corretta tra quelle duplicate e i progetti sono stati corretti in modo da fare riferimento a essa. È ora necessario modificare la tabella MSP_RESOURCES in base alla risorsa corretta. Eseguire la query 4, identica alla query 1, per ottenere un elenco delle risorse dell'organizzazione duplicate. Aggiornare quindi la colonna RES_EUID relativa alla risorsa duplicata in modo che faccia riferimento alla risorsa designata come corretta.

Query 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

Si supponga ad esempio che l'esecuzione della query 4 restituisca i risultati seguenti. La riga 'Barbara Zighetti' è corretta. È necessario correggere 'Angela Barbariol'.

RES_UID RES_NAME RES_EUID

123

Barbara Zighetti

123

124

Barbara Zighetti

123

125

Angela Barbariol

125

126

Angela Barbariol

126

Per correggere la situazione, è possibile scegliere 'Angela Barbariol' con RES_UID=125 come risorsa "corretta" e aggiornare l'altra riga in modo che faccia riferimento a tale risorsa. Ad esempio:

RES_UID RES_NAME RES_EUID

123

Barbara Zighetti

123

124

Barbara Zighetti

123

125

Angela Barbariol

125

126

Angela Barbariol

125

Rimuovere la risorsa duplicata dal pool di risorse dell'organizzazione

È possibile rimuovere una risorsa duplicata dal pool di risorse dell'organizzazione facendo riferimento alla risorsa duplicata da un progetto fittizio (PROJ_ID = valore intero massimo). È inoltre necessario pulire i calendari dell'organizzazione correlati. A tal scopo, eseguire la query 5.

Query 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

Dopo aver completato i passaggi precedenti, tentare di eseguire nuovamente lo strumento di migrazione con l'opzione -verify per verificare che il problema delle risorse duplicate sia stato risolto.

Eseguire test manuali per problemi di migrazione

L'esecuzione dello strumento di migrazione con l'opzione -verify consente di verificare automaticamente nei dati di Project Server 2003 la presenza di problemi che possono impedire la riuscita della migrazione. È inoltre possibile eseguire questi controlli manualmente, oltre ad altri non disponibili con l'opzione -verify. Nella prima parte di questo articolo sono stati descritti i controlli automatici disponibili. Nella seconda parte verrà illustrato come eseguire i controlli manuali sui dati di Project Server 2003 per prepararli per la migrazione.

La versione del progetto deve essere almeno Project Server 2003 SP2a

Microsoft supporta la migrazione da Project Server 2003 SP2a. Se nel sistema in uso non è installato tale Service Pack, sarà necessario applicarlo. Per ulteriori informazioni sul Service Pack, vedere l'articolo della Knowledge Base Descrizione di Project Server 2003 Service Pack 2a (https://go.microsoft.com/fwlink/?linkid=78242\&clcid=0x410).

Come controllare il problema

Eseguire la query SQL seguente nel database "Project Server 2003 Web tables". Questa query indica la versione specifica di Project Server, incluso il numero del Service Pack.

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

Risultato del test riuscito Risultato del test non riuscito

11.2

11.1

Come correggere il problema

Applicare Project Server 2003 SP2a all'installazione di Project Server 2003. Per ulteriori informazioni sull'applicazione di Project Server 2003 SP2a, vedere Preparare la migrazione a Project Server 2007.

Il modello globale dell'organizzazione non deve essere modificato esternamente

Il flag ‘Externally Edited’ viene impostato su ‘true’ quando il modello globale dell'organizzazione viene modificato esternamente rispetto a Project, ad esempio tramite un'applicazione di terze parti. Project Professional controlla questo flag: se è impostato su true, tutti i dati del modello globale dell'organizzazione vengono ricalcolati per garantire la coerenza. Impostare questo flag su ‘false’ per consentire la migrazione.

Come controllare il problema

Eseguire la query SQL seguente nel database "Project Server 2003 Project tables". La query seguente verifica la presenza nel database di Project Server 2003 di progetti modificati esternamente. Se vengono restituite righe, non sarà possibile eseguire la migrazione del modello globale dell'organizzazione nello stato corrente.

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

Risultato del test riuscito Risultato del test non riuscito

Non vengono restituite righe.

Vengono restituite una o più righe.

Come correggere il problema

Aprire il modello globale dell'organizzazione in Project Professional e salvarlo.

Determinare se il modello globale dell'organizzazione è stato estratto

Il modello globale dell'organizzazione non deve risultare estratto durante la migrazione dei progetti.

Come controllare il problema

La query SQL seguente verifica se il modello globale dell'organizzazione è stato estratto. Eseguire la query SQL seguente nel database "Project Server 2003 Project tables".

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

Risultato del test riuscito Risultato del test non riuscito

0

Viene restituito un valore maggiore di "0".

Come correggere il problema

Assicurarsi che il modello globale dell'organizzazione sia archiviato.

  1. In Project Server 2003 Project Web Access fare clic su Amministrazione.

  2. Fare clic su Gestisci funzionalità dell'organizzazione.

  3. Fare clic su Archiviazione progetti dell'organizzazione per visualizzare l'utente che ha estratto il modello globale dell'organizzazione. Coordinarne l'archiviazione o eseguire un'operazione di archiviazione forzata da Project Web Access.

Determinare se il modello globale dell'organizzazione è bloccato

Un progetto viene bloccato se il computer viene arrestato in modo anomalo o se Project Professional viene chiuso in modo anomalo. Se il modello globale dell'organizzazione è bloccato, non è possibile eseguire lo strumento di migrazione.

Come controllare il problema

La query SQL seguente controlla se il file del modello globale dell'organizzazione è bloccato. Eseguire la query SQL seguente nel database "Project Server 2003 Project tables".

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

Risultato del test riuscito Risultato del test non riuscito

0

1

Come correggere il problema

La query SQL seguente consente di sbloccare il modello globale dell'organizzazione. Eseguire la query SQL seguente nel database "Project Server 2003 Project tables".

Update MSP_PROJECTS set PROJ_LOCKED = 1 where PROJ_TYPE = 2

Determinare se la lingua predefinita del database delle tabelle Web e del database delle tabelle di progetto deve corrispondere

La lingua predefinita del database "Project Server 2003 Web tables" deve corrispondere a quella del database "Project Server 2003 Project tables" prima della migrazione.

Come controllare il problema

Questa query determina la lingua predefinita per ogni database. Se i risultati della query non corrispondono, la migrazione non viene eseguita correttamente. Eseguire la query SQL seguente nei database "Project Server 2003 Project tables" e "Project Server 2003 Web Tables".

select WADMIN_DEFAULT_LANGUAGE from dbo.MSP_WEB_ADMIN.

Risultato del test riuscito Risultato del test non riuscito

I risultati corrispondono quando il controllo viene eseguito sui due database.

I risultati non corrispondono quando il controllo viene eseguito sui due database.

Come correggere il problema

Contattare l'amministratore per correggere lo stato non coerente tra i due database.

Determinare se un nome di risorsa include una virgola

In Office Project Server 2007 una risorsa dell'organizzazione di qualsiasi lingua non avere un nome che include una virgola (,). Tale carattere deve essere sostituito con un carattere valido.

Come controllare il problema

Questa query controlla nel pool di risorse dell'organizzazione la presenza di nomi di risorsa che contengono una virgola. Eseguire la query SQL seguente nel database "Project Server 2003 Project tables".

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

Risultato del test riuscito Risultato del test non riuscito

Nessuna riga restituita.

Una o più righe restituite.

Come correggere il problema

Eseguire la query SQL seguente nei database "Project Server 2003 Project tables" e "Project Server 2003 Web tables". Il carattere virgola verrà sostituito con un carattere di sottolineatura. Se si desidera utilizzare un carattere valido diverso, è possibile modificare la query.

-- 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

Determinare se i campi personalizzati obbligatori delle risorse dell'organizzazione non contengono valori

La migrazione non viene eseguita per tutte le risorse dell'organizzazione che non hanno un valore per un campo personalizzato obbligatorio dell'organizzazione, ad esempio il codice RBS. Verrà inserito un errore nel registro della migrazione durante la migrazione. È consigliabile verificare la presenza di questo scenario prima di avviare la migrazione. Se le risorse dell'organizzazione solo molto vecchie, ovvero sono state create prima che il campo personalizzato fosse impostato come ‘Obbligatorio’, oppure inattive, potrebbero non includere valori per il campo personalizzato obbligatorio.

Una soluzione per questa situazione consiste nell'assicurarsi che tutti i campi personalizzati delle risorse di Office Project Server 2007 siano impostati su Non necessario. È quindi possibile riportarli manualmente allo stato precedente in Office Project Server 2007.

Esistono due metodi di verifica che è possibile utilizzare per individuare i campi personalizzati che hanno provocato il problema di migrazione.

  • Il metodo di verifica 1 utilizza una query SQL sul database "Project Server 2003 Project tables".

  • Il metodo di verifica 2 utilizza l'interfaccia utente di Project Professional 2003.

Come controllare il problema utilizzando il metodo di verifica 1

Questa query SQL restituisce le risorse dell'organizzazione con campi personalizzati obbligatori dell'organizzazione senza un valore. Eseguire la query SQL seguente nel database "Project Server 2003 Project tables".

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

Risultato del test riuscito Risultato del test non riuscito

Non vengono restituite righe.

Vengono restituite una o più righe.

Come correggere il problema

Aprire il pool delle risorse dell'organizzazione in Project Server 2003 e impostare i valori per i campi personalizzati obbligatori o impostare i campi personalizzati interessati come 'Non necessario'.

Come controllare il problema utilizzando il metodo di verifica 2

Questo metodo richiede l'utilizzo di Project Professional 2003 per aprire il pool di risorse dell'organizzazione. Tentando di salvare il pool di risorse dell'organizzazione, verrà verificato se i campi personalizzati obbligatori di tutte le risorse dell'organizzazione selezionate includono valori.

  1. Aprire Project Professional 2003 connesso al server Project Server 2003.

  2. Scegliere Opzioni organizzazione dal menu Strumenti e quindi fare clic su Apri pool di risorse organizzazione.

  3. Nella finestra di dialogo Apri pool di risorse organizzazione visualizzata selezionare la casella di controllo Includi risorse inattive. Verificare che l'opzione Lettura/scrittura per l'estrazione sia selezionata. Fare clic sul pulsante Applica filtro.

  4. Fare clic sul pulsante Seleziona/Deseleziona tutto per selezionare tutte le risorse.

  5. Fare clic sul pulsante Apri/Aggiungi. Dopo avere aperto le risorse per la modifica, fare clic su Salva. In Project Professional viene quindi controllato che ogni risorsa dell'organizzazione, attiva o inattiva, includa valori per i campi personalizzati obbligatori.

    Risultato del test riuscito Risultato del test non riuscito

    Dopo il salvataggio non vengono visualizzati messaggi di errore.

    Viene visualizzato un messaggio di errore contenente un elenco degli errori per le risorse che non hanno valori per i campi personalizzati obbligatori dell'organizzazione.

Come correggere il problema

In Project Server 2003 impostare i valori per i campi personalizzati obbligatori oppure impostare i campi personalizzati interessati come Non necessario.

Determinare se un campo personalizzato di una risorsa ha un valore non presente nella definizione della tabella di ricerca

Tutti i valori di un campo personalizzato di una risorsa devono trovarsi nella definizione della tabella di ricerca.

Come controllare il problema

Questa query SQL verifica i campi personalizzati delle risorse non validi controllando se il valore del campo personalizzato è presente nella tabella di ricerca corrispondente.

Eseguire la query SQL seguente nei database "Project Server 2003 Project tables" e "Project Server 2003 Web Tables".

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

Risultato del test riuscito Risultato del test non riuscito

Non vengono restituite righe.

Vengono restituite una o più righe.

Come correggere il problema

La query SQL seguente imposta i valori dei campi personalizzati delle risorse non validi su Null. Eseguire la query SQL seguente nel database "Project Server 2003 Project tables".

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

Determinare se le risorse dell'organizzazione sono state modificate esternamente

Per eseguire la migrazione delle risorse dell'organizzazione da Project Server 2003 a Project Server 2007, è necessario che tali risorse non siano state modificate esternamente.

Come controllare il problema

La query seguente verifica nel pool di risorse dell'organizzazione le risorse che sono state modificate esternamente. Se il test non riesce, non sarà possibile eseguire la migrazione del pool di risorse dell'organizzazione nello stato corrente. Eseguire la query SQL seguente nel database "Project Server 2003 Project tables".

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

Risultato del test riuscito Risultato del test non riuscito

0

Viene restituito un valore maggiore di "0".

Come correggere il problema

Per risolvere il problema, è necessario innanzitutto impostare tutte le risorse dell'organizzazione come modificate esternamente. Questa operazione può essere eseguita tramite una query SQL. È quindi possibile apportare una modifica a ogni risorsa dell'organizzazione in modo che tutti gli aggiornamenti rilevanti vengano eseguiti da Project Professional quando il pool di risorse dell'organizzazione viene salvato. Questa azione consente di rimuovere il flag "externally edited" per ciascuna risorsa dell'organizzazione. Se una risorsa dell'organizzazione non viene modificata, i dati non vengono ricalcolati da Project Professional per tale risorsa. La risorsa specifica dell'organizzazione continua a essere contrassegnata come modificata esternamente e la migrazione del pool di risorse dell'organizzazione non viene eseguita.

[!NOTA] Dopo la migrazione del pool di risorse dell'organizzazione, è possibile rimuovere le modifiche apportate a ciascuna risorsa dell'organizzazione.

È possibile utilizzare la soluzione generale seguente per rimuovere tutti i flag di modifica esterna dalle risorse dell'organizzazione.

  1. Impostare tutte le risorse dell'organizzazione come modificate esternamente. A tal scopo, eseguire la query SQL seguente nei database "Project Server 2003 Project tables".

    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. Aggiungere temporaneamente un campo personalizzato di risorsa irrilevante a ciascuna risorsa dell'organizzazione per forzare i ricalcoli da eseguire in Project Professional 2003. I ricalcoli forzati consentiranno di contrassegnare ogni risorsa dell'organizzazione come non modificata esternamente. Ad esempio, in Project Professional 2003 è possibile creare un campo personalizzato 'test' della risorsa che viene aggiunto a ogni risorsa dell'organizzazione. È possibile utilizzare qualsiasi tipo di campo personalizzato. È ad esempio possibile scegliere un campo personalizzato Durata risorsa, utilizzato raramente.

    [!NOTA] Se si utilizza un campo personalizzato Durata risorsa dell'organizzazione, è consigliabile non creare un elenco di valori. Non verrà eseguita la migrazione dei campi personalizzati Durata risorsa organizzazione con elenchi di valori. Quando si crea questo campo personalizzato temporaneo utilizzare un valore numerico.

    È possibile denominare il nuovo campo personalizzato "CP risorsa test". Dopo aver creato il campo personalizzato "CP risorsa test", aprire il pool di risorse dell'organizzazione e aggiungere la colonna "CP risorsa test". Impostare un valore valido per questo campo personalizzato per tutte le risorse. Salvare il pool di risorse dell'organizzazione ed eseguire la migrazione. Al termine della migrazione, rimuovere il campo personalizzato "CP risorsa test" da Microsoft Office Project Professional 2007.

Determinare se vi sono campi personalizzati Durata risorsa organizzazione con elenchi di valori

I campi personalizzati Durata risorsa organizzazione con elenchi di valori associati non consentono di eseguire la migrazione.

Come controllare il problema

Questa query SQL controlla la presenza di campi personalizzati Durata risorsa organizzazione con elenchi di valori associati. Eseguire la query SQL seguente nel database "Project Server 2003 Project tables".

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)

Risultato del test riuscito Risultato del test non riuscito

Non vengono restituite righe.

Vengono restituite una o più righe. Questi campi personalizzati Durata risorse organizzazione hanno elenchi di valori associati. L'elenco di valori deve essere rimosso manualmente per ognuno.

Come correggere il problema

Per risolvere il problema, è necessario rimuovere manualmente tutti gli elenchi di valori da ogni campo personalizzato Durata risorse organizzazione trovato dalla query SQL. A tal scopo, attenersi alla procedura seguente.

  1. Aprire Project Professional 2003 connesso al server Project Server 2003.

  2. Scegliere Opzioni organizzazione dal menu Strumenti e quindi fare clic su Apri modello globale organizzazione.

  3. Nella pagina Microsoft Project - Modello globale organizzazione estratto scegliere Personalizza dal menu Strumenti e quindi fare clic su Campi organizzazione.

  4. Nella pagina Personalizza campi organizzazione fare clic su Risorsa nella sezione Campi della scheda Campi personalizzati.

  5. Nell'elenco a discesa Tipo fare clic su Durata. Tutti i campi personalizzati Durata risorsa organizzazione verranno visualizzati nell'elenco Campo.

  6. Nell'elenco Campo selezionare il primo campo personalizzato Durata risorsa organizzazione che corrisponde a quelli restituiti dalla query SQL eseguita in precedenza. Nella sezione Attributi personalizzati fare clic sul pulsante Elenco valori. Nell'elenco di valori per il campo personalizzato Durata risorsa organizzazione specifico eliminare tutti i valori nella colonna Valore e quindi fare clic su OK. Nella finestra di dialogo di Microsoft Office Project visualizzata fare clic su OK.

  7. Nella pagina Personalizza campi organizzazione nella sezione Attributi personalizzati verificare che Elenco valori non sia selezionato per il campo personalizzato Durata risorsa organizzazione selezionato nell'elenco Campo . Se Elenco valori è selezionato, selezionare Nessuno.

  8. Nell'elenco Campo selezionare tutti i rimanenti campi Durata risorsa organizzazione personalizzati che corrispondono alla query SQL e ripetere i passaggi 6 e 7.

  9. Fare clic su OK.

Determinare se i campi personalizzati Durata risorsa organizzazione contengono valori validi

In Office Project Server 2007 non sono consentiti i valori di durata negativi o maggiori di 34689600. Se si tenta di eseguire la migrazione di campi personalizzati Durata risorsa organizzazione di Project Server 2003 contenenti tali valori, la migrazione non verrà eseguita correttamente.

Come controllare il problema

Per controllare il problema, eseguire la query SQL seguente sul database "Project Server 2003 Project tables". La query restituirà i campi personalizzati Durata risorsa organizzazione con valori non validi.

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

Risultato del test riuscito Risultato del test non riuscito

Non vengono restituite righe.

Vengono restituite una o più righe.

Come correggere il problema

Per risolvere il problema, è necessario modificare manualmente il valore del campo personalizzato Durata risorsa organizzazione per ciascuno dei campi personalizzati identificati. È necessario verificare che i valori del campo siano validi, ovvero siano compresi tra 0 e 34689600.

Se il campo identificato dalla query è un campo personalizzato semplice (non un campo con una formula), è possibile modificare il valore del campo per farlo rientrare nell'intervallo consentito. Se il campo identificato dalla query è un campo con una formula, sarà necessario modificare la formula per assicurarsi che i risultati rientrino nell'intervallo di valori validi.

Determinare se i nomi dei campi personalizzati dell'organizzazione contengono spazi iniziali o finali

Verificare che i nomi dei campi personalizzati di Office Project Server 2007 non contengano spazi iniziali o finali, ad esempio __Campo personalizzato_ dove il carattere di sottolineatura rappresenta uno spazio. Se si tenta di eseguire la migrazione di campi personalizzati con spazi iniziali o finali, la migrazione provocherà un errore.

Determinare se l'account dell'amministratore della migrazione è presente in Project Server 2003

Se l'account dell'amministratore della migrazione è presente in Project Server 2003, come nome o come account di Windows, non verrà eseguita la migrazione delle autorizzazioni utente, dei mapping delle categorie e delle proprietà utente in Office Project Server 2007. In sostanza, ha la precedenza l'utente di Office Project Server 2007. Si noti che se nei progetti viene utilizzato l'account dell'amministratore della migrazione, tali risorse verranno sostituite con l'account dell'amministratore della migrazione.

Sostituzione delle virgole nei nomi delle risorse dell'organizzazione

Se nei database di Project Server 2003 sono presenti nomi di risorse dell'organizzazione contenenti virgole (,), non sarà possibile eseguire la migrazione delle risorse corrispondenti. Ciò può costituire un problema con alcune impostazioni internazionali, in cui la virgola viene comunemente utilizzata nei nomi delle risorse.

Come risolvere il problema

Utilizzare le query SQL seguenti per sostituire tutte le virgole (,) con caratteri di sottolineatura (_).

Eseguire la query seguente sul database delle tabelle di progetto:

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

Eseguire la query seguente sul database delle tabelle 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