Hi,
Just wanted to share a quick fix in SharePoint 2010 Search which I faced today, this error almost took me for a toll with no help in Internet :(, finally I was able to successfully
resolve the issue with bit of thinking and support from my colleague.
Scenario: Installed SharePoint via Power shell Scripts in SharePoint 2010 Farm (3 App Servers, 3 WFE's and 1 SQL Server). Unable to create Crawl or Index components in some of the machines.
Error: While creating new crawl components or Query & Index partitions, SharePoint 2010 keep on prompting the message "The path must point to a fixed, NTFS drive whose root directory exists."
Note: The error prompts while trying via Central Administration and via Powershell Scripts it hangs to activate the components
Solution: Execute the following command in Power shell and wait for 15 minutes to reflect the changes
Repair-SPManagedAccountDeployment
Via scripting, add the following lines at the top
Repair-SPManagedAccountDeployment
sleep 900
Hope this little fix will help other users to come up with a solution quickly.
Following is the complete script for Crawl and Query Components
Crawl Component
try
{
$ServerName = $env:COMPUTERNAME
Repair-SPManagedAccountDeployment
sleep 900
#Start Search Service Instance
$searchInstance = Get-SPEnterpriseSearchServiceInstance | where {($_.server) -match $ServerName}
if ($searchInstance.status -eq "Disabled")
{
Start-SpEnterpriseSearchServiceInstance -identity $ServerName
}
## Wait
Write-Host -ForegroundColor Blue " - Waiting for Search Service Instance to start..." -NoNewline
While ($searchInstance.status -ne "Online")
{
Write-Host -ForegroundColor Blue "." -NoNewline
start-sleep 1
$searchInstance = Get-SPEnterpriseSearchServiceInstance | where {($_.server) -match $ServerName}
}
Write-Host -BackgroundColor Blue -ForegroundColor Black " ......: Search Service Started!"
#Get Service Application
$searchApp = Get-SPServiceApplication | ? {$_.TypeName -eq "Search Service Application"}
write-host Getting Initial Crawl Topology
# Retrieve the active topology
$InitialCrawlTopology = $searchApp | Get-SPEnterpriseSearchCrawlTopology -Active
$InitialCrawlTopology
write-host Cloning Crawl Topology
# Clone the topology
$CrawlTopology = $searchApp | New-SPEnterpriseSearchCrawlTopology -Clone -CrawlTopology $InitialCrawlTopology
write-host Creating new crawl component
# Create the new crawl component
$CrawlDatabase0 = ([array]($searchApp | Get-SPEnterpriseSearchCrawlDatabase))[0]
$CrawlComponent0 = New-SPEnterpriseSearchCrawlComponent -CrawlTopology $CrawlTopology -CrawlDatabase $CrawlDatabase0 -SearchServiceInstance $searchInstance -IndexLocation $CrawlComponents
$CrawlComponent1 = New-SPEnterpriseSearchCrawlComponent -CrawlTopology $CrawlTopology -CrawlDatabase $CrawlDatabase0 -SearchServiceInstance $searchInstance -IndexLocation $CrawlComponents
write-host Activating new crawl topology
# Activate the new crawl topology
$CrawlTopology | Set-SPEnterpriseSearchCrawlTopology -Active
Write-Host -ForegroundColor white Waiting for the old crawl topology to become inactive
do {write-host -NoNewline .;Start-Sleep 10;} while ($InitialCrawlTopology.State -ne "Inactive")
sleep 900
write-host Deleting Crawl Topology
# Delete the old crawl topology
$InitialCrawlTopology | Remove-SPEnterpriseSearchCrawlTopology
sleep 100
}
catch
{
Write-Output $_
}
Query Component
try
{
$ServerName = $env:COMPUTERNAME
Repair-SPManagedAccountDeployment
sleep 900
#Start Search Service Instance
$searchInstance = Get-SPEnterpriseSearchServiceInstance | where {($_.server) -match $ServerName}
if ($searchInstance.status -eq "Disabled")
{
Start-SpEnterpriseSearchServiceInstance -identity $ServerName
}
## Wait
Write-Host -ForegroundColor Blue " - Waiting for Search Service Instance to start" -NoNewline
While ($searchInstance.status -ne "Online")
{
Write-Host -ForegroundColor Blue "." -NoNewline
start-sleep 1
$searchInstance = Get-SPEnterpriseSearchServiceInstance | where {($_.server) -match $ServerName}
}
Write-Host -BackgroundColor Blue -ForegroundColor Black " ......Started!"
$searchApp = Get-SPServiceApplication | ? {$_.TypeName -eq "Search Service Application"}
write-host Retrieving Active Topology
# Retrieve the Active Query Topology
$InitialQueryTopology = $searchApp | Get-SPEnterpriseSearchQueryTopology -Active
$InitialQueryTopology
write-host Cloning Query Topology
# Create New topology
$QueryTopology = $searchApp | New-SPEnterpriseSearchQueryTopology -Partitions 2
write-host Adding Query Components
$IndexPartition0 = ([array](Get-SPEnterpriseSearchIndexPartition -QueryTopology $QueryTopology))[0]
$QueryComponent0 = New-SPEnterpriseSearchQuerycomponent -QueryTopology $QueryTopology -IndexPartition $IndexPartition0 -SearchServiceInstance $searchInstance -IndexLocation $QueryComponents
$IndexPartition1 = ([array](Get-SPEnterpriseSearchIndexPartition -QueryTopology $QueryTopology))[1]
$QueryComponent1 = New-SPEnterpriseSearchQuerycomponent -QueryTopology $QueryTopology -IndexPartition $IndexPartition1 -SearchServiceInstance $searchInstance -IndexLocation $QueryComponents
# Reuse the existing property database
$PropertyDatabase0 = ([array]($searchApp | Get-SPEnterpriseSearchPropertyDatabase))[0]
# Assign three index partitions to the property database
$IndexPartition0 | Set-SPEnterpriseSearchIndexPartition -PropertyDatabase $PropertyDatabase0
$IndexPartition1 | Set-SPEnterpriseSearchIndexPartition -PropertyDatabase $PropertyDatabase0
write-host Activating new query topology
# Activate the new query topology
$QueryTopology | Set-SPEnterpriseSearchQueryTopology -Active
Write-Host -ForegroundColor white Waiting for the old query topology to become inactive
do {write-host -NoNewline .;Start-Sleep 10;} while ($InitialQueryTopology.State -ne "Inactive")
sleep 900
write-host Deleting old query topology
# Delete the old query topology
$InitialQueryTopology | Remove-SPEnterpriseSearchQueryTopology
}
catch
{
Write-Output $_
}
Thursday, February 17, 2011
Subscribe to:
Posts (Atom)