Delen via


Errore “The given key was not present in the dictionary” in MOSS 2007

Di recente mi è capitato di imbattermi in questi errori in una installazione di MOSS 2007:

  • nel fare l’export di un sito mediante il Content Deploy wizard oppure mediante stsadm, l’export si blocca e ritorna l’errore “the *** field type is not properly installed”
  • se si inserisce la CQWP (Content Query Web Part) su una pagina del sito, la pagina stessa va in errore e non riesce più ad essere visualizzata
  • la pagina “Colonne del sito” all’interno delle proprietà della site collection non può essere visualizzata (mngfields.aspx) e ritorna l’errore “The given key was not present in the dictionary”

Tutti questi errori, peraltro verificatisi su una e una sola site collection di una web application, si verificano perchè manca a livello globale della web application la definizione di un tipo di dato personalizzato usato in uno dei metadati di una colonna di una lista del sito stesso.

MOSS memorizza i tipi di dato in file XML nel file system dei frontend, per ottimizzare l’accesso via web, e condivide queste informazioni tra tutte le site collection definite all’interno della web application.

Il problema può essere causato da una operazione di export/import fatta in precedenza senza fare preventivamente l’operazione di stsadm –o preparetomove (in questo modo il database non viene preparato ad essere esportato e importato su un altra web application, e quindi tali definizioni di dati personalizzati posso venire a mancare e generare gli errori precedenti).

Il modo per rimediare è descritto nell’articolo https://12hive.blogspot.com/2008/08/field-got-corrupted-or-i-corrupted-site.html tuttavia esiste anche una soluzione più semplice, andare direttamente sulla tabella dbo.ContentTypes della web application incriminata e cercare nella colonna Definition la entry relativa al tipo di dato personalizzato, modificandolo in modo da impostarlo su un tipo di dato esistente. Ovviamente,  oltre ad essere una procedura assolutamente NON supportata, questa modifica potrebbe comportare la perdita dei dati impostati sulla colonna o sulle colonne che erano precedentemente impostate secondo il tipo di dato modificato.

Noi comunque l’abbiamo provato modificando il tipo di dato da “longtext” a “text” ed ha funzionato senza perdere nulla.

smile_regular

Technorati Tag: MOSS,mngfields.aspx