Reading Time: 3 minutesBonjour à tous,
Aujourd’hui je vous propose des solutions pour résoudre les problèmes de dépendance sur votre ferme SharePoint.
Vous avez surement lors d’une migration eu ce petit message

Une fois que vous cliquez dessus, l’analyseur d’intégrité vous donne des erreurs tel que [MissingSetupFile] , [MissingWebPart] , [MissingSiteDefinition] ou même [MissingAssembly].
Plusieurs solutions s’offre à nous.Des gentils développeurs ont eu l’idée de développer un petit outil qui peut dans certain cas résoudre ces problèmes. Vous pouvez le trouver ici:  CodePlex – FeatureAdmin
Si ce petit soft ne peux pas résoudre les problèmes de dépendances il faut donc mettre les mains dans la Base de donnée SharePoint (Hein????) et oui!
Rendez vous dans le SQL Server Management et ouvrez une nouvelle fenêtre de requête en sélectionnant la base de contenu concernée par l’erreur de dépendance.(vous trouverez le nom de celle ci dans l’erreur)
Avant toute chose faites un backup de la base!
Voici cas par cas les actions à faire:
[MissingSetupFile]
Récupérez le lien du fichier manquant dans l’erreur commençant par « Feature… » et faites un select comme ceci:
select * from AllDocs
where SetupPath like '%Features\MetroGrid_Feature1\MetroGridResources\css\custom-theme\images\ui-icons_cd0a0a_256x240.png%'
Cette requête vous retourne autant de ligne que ce fichier est référencé dans la base.
Copiez l’id avec un clic droit

Il reste qu’a faire un delete comme ceci:
delete from AllDocs where id = '2ED0CF7C-58A7-4274-BFD1-19FA50811519'
La référence est supprimée de la base.Reste à réanalyser les problèmes afin de voir si il ne reste pas d’autre référence dans une autre base de contenu par exemple.

Pour la suite le déroulement est le même, juste les requêtes qui change, je vais donc me passer de faire des screenshots 😉
[MissingFeature]
select *
from features
join webs on (features.webid = webs.id)
where featureid = 'L'id de votre fonctionnalité manquante'
Une fois l’id récupéré soit vous pouvez désactiver la fonctionnalité directement via le site (je recommande) si vous ne pouvez pas, un petit delete devrait faire l’affaire!
[MissingAssembly]
SELECT *
from EventReceivers event
join webs on (event.webid = webs.id)
join sites site on (site.id = event.siteid)
where Assembly = âAssembly manquante que vous trouverez dans le message d'erreur'
Une fois l’id récupéré, faites un delete également.
[MissingSiteDefinition]
select *
from webs
where webtemplate = 'id du template'
idem que précédemment, un delete.
[MissingWebPart]
select *
from AllWebParts webpart
join alldocs doc on (webpart.tp_PageUrlID = doc.ID)
join sites site on (site.id = webpart.tp_siteid)
where tp_WebPartTypeId = âid du webpartâ
Je vous conseil ici une fois l’url récupérée, de vous rendre sur celle ci et de rajouter à la fin de l’url ?Contents=1
Vous pourrez ainsi supprimer facilement le webpart de la page.
Voila, jâespère que mon expérience sur ce problème pourra résoudre le votre 😉
A bientôt!