Anche per gl ITPro qualche pillola per la SharePoint Therapy.
La prima pillola, che probabilmente vi toglierà di torno un pesante problema che affligge tutte le vs. installazioni standalone di SharePoint Server 2010 e Search Server 2010 distruggendovi l'entusiasmo per aver scoperto la cmdlet New-SPConfigurationDatabase:
le Search Service Applications non terminano la loro fase di provisiong anche tutto sembra stato fatto con successo .
Andando a controllare lo stato del componente di Query nella Index Partition 0 noterete che esso è in perenne stato "Initializing" il che significa che facendo una qualsiasi ricerca nei vostri siti otterrete un messaggio di errore. Questo accade perchè l'applicazione "Web" di creazione delle Search Service application contiene un quasi "bug" a causa del quale se l'installazione di SharePoint non è di tipo consolidato o ospitata in una macchina aggregata a dominio essa fallisce nell'operazione di creazione dello share di rete usato per la propagazione rapida degli indici. Questo share di rete viene usato dalle varie macchine che potrebbero costituire il "cluster di indicizzazione". Il risultato è che il catalogo iniziale non viene creato e tutto il castello della Search Service Application non si può edificare . Avere una macchna di sviluppo senza la parte Search significa avere un ambiente dimezzato nella sua utilità. Apparentemente non c'è soluzione. In realtà la soluzione esiste grazie al fatto che in SharePoint 2010 tutte le funzioni di configurazione di una farm possono essere compiute tramite l'ausilio di PowerShell. Grazie al lavoro di Gary Lapoint Creating a SharePoint 2010 Enterprise Search Service Application using PowerShell e di Søren Nielsen possiamo configurate le nostre Search Applications e vivere parzialmente felici: parzialmente perchè SharePoint 2010 non è ufficialmente supportato in un ambiente non Active Directory.
Potete scaricare lo script PowerShell da questo link download.
Come funziona? Semplicemente copiatelo in una cartella sulla macchina che presenta il problema, possibilmente in un folder dal nome breve tipo c:\script. Lo script contiene una serie di funzioni PowerShell di cui una è quella principale: Start-EnterpriseSearch .
L'invocazione è quindi Start-EnterpriseSearch “\searchconfig.xml"
Lo script puoi essere invocato direttamente dall'ambiente di editing PowerShell PowerShell_ise.exe.
Deve essere eseguito da un account che è amministratore di macchina e farm administrator, meglio ancora dall'account che ha configurato la farm SharePoint. Esso inoltre richiede la firma digitale per poter essere eseguito dall'ambiente PowerShell in configurazione di default. Se non volete o potete firmarlo dovete dare al vs. PowerShell la policy Set-ExecutionPolicy Unrestricted .
Il file XML di configurazione contiene le istruzioni per la creazione della Search Service Application.
Vediamo rapidamente come è strutturato e quali sono i valori che dobbiamo adattare per le nostre esigenze:
IndexLocation="C:\Program Files\Microsoft Office Servers\14.0\Data\Office Server\Applications"
Identifica il posto in cui gli indici verranno posizionati. E' anche il percorso che viene reso share di rete...
Account="localhost\saservice" <-- è l'account con cui girerà la Search Service Application
ShareName="SearchShare" <-- è il nome dello share con cui verrà condivisa la cartella indicata in IndexLocation
EnterpriseSearchServiceApplication Name="Enterprise Search Service Application" <-- il nome dell'application
DatabaseServer="localhost" <-- il nome/istanza del DB SQLServer che conterrà i risultati di ricerca e la configurazione dell'applicazione e crawling
DatabaseName="SharePoint_Search" <-- è il prefisso che verrà usato per i tre DB della Search Application
ApplicationPool Name="SharePoint Enterprise Search Application Pool" Account="localhost\saservice" <-- Il nome e l'account dell'Application pool associato all'applicazione
Server Name="localhost" <-- lo trovate in vari punti è il nome della macchina
Ultima chiccha: se volte risparmiarvi tutta questa fatica potete usare un interessantissimo Script PowerShell che permette di configurare una intera Farm SharePoint 2010 dalla A alla Z secondo le proprie esigenze, dando frà l'altro un nome "umano" ai vari Database.....Lo trovate qua: AutoSPInstaller at CodePlex.
Il file SearchConfig.XML
<Services>
<EnterpriseSearchService ContactEmail="no-reply@sp2010.com"
ConnectionTimeout="60"
AcknowledgementTimeout="60"
ProxyType="Default"
IgnoreSSLWarnings="false"
InternetIdentity="Mozilla/4.0 (compatible; MSIE 4.01; Windows NT; MS Search 6.0 Robot)"
IndexLocation="c:\sharepoint\indexes"
PerformanceLevel="PartlyReduced"
Account="sp2010\spsearch"
ShareName="SearchShare">
<EnterpriseSearchServiceApplications>
<EnterpriseSearchServiceApplication Name="Enterprise Search Service Application"
DatabaseServer="spsql1"
DatabaseName="SharePoint_Search"
FailoverDatabaseServer=""
Partitioned="false"
Partitions="1"
SearchServiceApplicationType="Regular">
<ApplicationPool Name="SharePoint Enterprise Search Application Pool" Account="sp2010\spsearch" />
<CrawlServers>
<Server Name="sp2010b2" />
< SPAN>CrawlServers>
<QueryServers>
<Server Name="sp2010b2" />
< SPAN>QueryServers>
<SearchQueryAndSiteSettingsServers>
<Server Name="sp2010b2" />
< SPAN>SearchQueryAndSiteSettingsServers>
<AdminComponent>
<Server Name="sp2010b2" />
<ApplicationPool Name="SharePoint Enterprise Search Application Pool" Account="sp2010\spsearchsvc" />
< SPAN>AdminComponent>
<Proxy Name="Enterprise Search Service Application Proxy" Partitioned="false">
<ProxyGroup Name="Default" />
< SPAN>Proxy>
< SPAN>EnterpriseSearchServiceApplication>
< SPAN>EnterpriseSearchServiceApplications>
< SPAN>EnterpriseSearchService>
< SPAN>Services>