Lors de la mise a jour de certains patchs, il arrive, que ceux-ci déclenchent de nouveaux soucis. Ce fut le cas avec un des CU post Service Pack 2 qui ne permettait plus de modifier les paramètres des menus de gauche d’un site Portal.
Comme epxliqué ici :
- Sharepoint Site Navigation error "<Web> is busy. Please try again"
- Sharepoint Site Navigation error "<Web> is busy. Please try again"
- An unexpected error occured while manipulating the navigational structure of this Web
Ainsi le message recu par le content manager est plutôt déconcertant avec le texte “xxxx is busy”.
Solutions 1
En regardant les logs ULS on trouve effectivement la problématique via un code TSQL en erreur qui nous confirme bien le soucis sur les menus avec la procedure stockée “proc_NavStructAllocateEidBlockWebId”.
A travers ces messages, on trouve la solution qui semble fonctionner le plus. Il faut donc pour cela effectuer un export du site puis réimporter le fichier obtenu :
- STSADM -o EXPORT –URL “http://myfarm/sites/mysitecollection/mysubsite” -FILENAME MySiteTOFix.DAT
- STSADM -o IMPORT -URL “http://myfarm/sites/mysitecollection/mysubsite” -FILENAME MySiteTOFix.DAT
Solutions 2
Ainsi certains cas ne permette pas cette solution et l’import dure des jours entiers pour ne jamais aboutir.
La solution alternative utilisée a été de supprimer toute la configuration des liens en erreur sur le sous-site en question via un code PowerShell spécifique qu’il convient de prendre avec une grande attention :
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Navigation") > $null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Publishing") > $null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Publishing.Navigation") > $null#$site = new-object Microsoft.SharePoint.SPSite("http://myfarm/sites/mysitecollection/mysubsite/")
$web = $site.openweb()
Write-Host "Web URL", $web.URLforeach ($node in $web.Navigation.QuickLaunch)
{
Write-Host " --- NODE URL", $node.Url
Write-Host " ==---> NODE URL TO DELETE", $node.Url
$node.delete()
Write-Host " ==---> NODE DELETED <---== "
foreach($SubNod in $node.Children)
{
Write-Host " ----- SUB NODE URL", $SubNod.Url
Write-Host " ==---> SUBNODE URL TO DELETE", $SubNod.Url
$SubNod.delete()
Write-Host " ==---> SUBNODE DELETED <---== "
}
}
$web.update()
Write-Host " ==---> WEB UPDATED <---== "
$web.Dispose()
$site.Dispose()
Une fois ce script exécuté, il ne vous reste donc plus qu’à recréer la personnalisation de vos lien sur ce site, ce qui est relativement rapide en général.
Conclusion
Bien qu’il soit nécessaire d’avoir des environnements à jour, il convient de prendre bien attention lors de l’installation de ceux-ci. En validant votre site sur une plateforme de test par exemple.
Romelard Fabrice [MVP]
Commentaires
Enregistrer un commentaire