<autocelebrazione>E’ con immenso piacere che scrivo questo primo post sul nuovo blog, sempre WordPress, ma “autogestito”. Il nuovo tema responsivo mi soddisfa molto dal punto di vista tecnico, un po’ meno da quello grafico… ho idea che i lavori non siano ancora finiti, so stay tuned ;) </autocelebrazione>
Giorni fa mi sono imbattuto in uno strano problema in ambito “Search”. Stavo indagando un errore del servizio di ricerca in una farm SharePoint 2010 quando, accedendo ai crawl log mi sono accorto che non era presente alcun log. Sapevo per certo che l’indicizzazione dei contenuti avveniva come me da pianificazione, ma di log neanche l’ombra.
Il popolamento dei crawl log e la loro manutenzione sono responsabilità di due timer job:
- Crawl Log Cleanup for Search Application <Nome SSA>
- Crawl Log Report for Search Application <Nome SSA>
Controllando la pagina delle Timer Job Definition, nella Central Administration, mi sono accordo che i due job era spariti. Come? Quando? Perché? Tutte queste domanda non hanno ancora risposta… Una possibilità, tenuta da parte come rimedio estremo, era quella di ricreare la Search Service Application, ma sinceramente mi sembrava troppo una soluzione troppo drastica.
Come molte altre volte ho trovato un valido aiuto nei forum Microsoft dedicati a SharePoint. Un utente con lo stesso mio problema si era scritto una consolle application e ne aveva postato il codice. Da qui alla “traduzione” in PowerShell il passo è stato breve (per accorgermi solo in seguito che un altro utente aveva già postato praticamente lo stesso script).
Questo è lo script che ho utilizzato:
|
1 2 3 4 5 6 7 8 |
$ssa = Get-SPServiceApplication "Nome SSA" $type = $ssa.GetType().Assembly.GetType("Microsoft.Office.Server.Search.Administration.CrawlReportJobDefinition") $ensureCrawlReportTimerjob = $type.GetMethod("EnsureJob") $ensureCrawlReportTimerjob.Invoke($null,$ssa) $typeClean = $ssa.GetType().Assembly.GetType("Microsoft.Office.Server.Search.Administration.CrawlReportCleanupJobDefinition") $ensureCrawlReportCleanupTimerjob = $typeClean.GetMethod("EnsureJob") $ensureCrawlReportCleanupTimerjob.Invoke($null,$ssa) |
L’utente che ha postato il codice originale metteva in guardia da comportamenti anomali del transaction log durante l’esecuzione di questo script. Sinceramente io non ho notato nulla di particolare, ma tenetelo comunque in considerazione, ha una sua logica questo avviso.
Ora vi lascio, Joe Carroll mi aspetta ;)


Peccato solo che il setup sia finito molto presto con un errore molto poco chiaro.
Anche il messaggio nei log e nel event viewer non mi suggeriva niente di preciso:
Event ID 11722 Product: Windows Fabric -- Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action DoFabricSetup, location: C:Program FilesWindows abricbinFabricFabric.Code.1.0MSIHiddenAppLauncher.exe, command:FabricSetup /operation:install /gac /trace:"C:ProgramDataWindows abricFabriclog" /fabricDataRoot:"C:ProgramDataWindows Fabric\" /traceBufferSizeInKB:128 /traceFileSizeInMB:128/fabricPrincipal:"DOMAINUsername"
Dopo aver trovato 



