Il y a de multiples définitions pour « la recherche ne fonctionne plus ». Il n’est pas question ici d’indexation, mais de l’impossibilité pour tous les utilisateurs de tous les sites de lancer une recherche.
Contexte : Ferme SharePoint 2010 ou 2013, Windows Server 2008 / 2008 R2.
Symptôme : Le lancement d’une recherche sur un site web aboutit à une erreur (Exception). Dans les fichiers de logs SharePoint, il y a des entrées du type :
« Tentative d’opération non autorisée sur une clé du Registre marquée pour suppression »
Dans le journal des événements Windows, il y a :
« Windows a détecté que votre fichier de Registre est toujours utilisé par d’autres applications ou services. Le fichier va être déchargé… »
Diagnostic : le compte de service de recherche essaie d’accéder à une clé de registre, mais il ne peut pas. Une session a pu être ouverte avec ce compte de service sur l’un des serveurs de la ferme (en bureau à distance). Des services ont été redémarrés (ou tentés de l’être). Puis la session a été fermée. Les ouvertures et fermetures de session provoques des ajouts / suppression de clés dans la base de registre. Il SEMBLERAIT que les services qui ont été redémarrés cherchent à accéder à ces clés, alors qu’elles étaient supprimées une fois la session fermée. Cette situation est expliquée ici : blogs.msdn.com.
Solution (Dans le cas du service de recherche) :
- Dans services.msc : Redémarrer les services « SharePoint Server Search 14 » et “SharePoint Foundation Search V4” (si déjà démarrés)
- Dans IIS : Recycler le pool d’application « SecurityTokenServiceApplicationPool » sur tous les serveurs SharePoint
- Dans l’administration centrale de SharePoint : Aller dans « Gérer les services sur le serveur », et redémarrer : « Service de paramètres de site et de requête de recherche ».
- En dernier recours, un reboot de serveur serait une solution, mais provoquerai une coupure de service, ce qui n’est pas toujours souhaitable.
Comment ne pas réitérer cet incident ?
Ne pas se connecter avec les comptes de service pour relancer les services eux-mêmes.
Il y aurait également une GPO (« Do not forcefully unload the user registry at user logoff ») à modifier (Lien externe), mais ceci nécessite un accord avec les administrateurs du domaine (risque de GPO locales écrasées).