Question

Je suis dans l'application de service de recherche Crawling un serveur de fichiers contenant 480k articles. Le serveur SharePoint n'a qu'un disque système avec un espace libre de 20 Go et il n'y a pas d'autres serveurs disponibles. Après avoir exploré le serveur de fichiers, le disque système est sorti de l'espace car le dossier d'index par défaut est sur le lecteur C. Nous avons arrêté de ramper, effectué une réinitialisation d'index et obtenu une application de service de recherche fonctionnant à nouveau, mais le composant d'index est cassé (coché sur la page d'administration de recherche et via PowerShell).

Nous avons commandé un nouveau disque pour les fichiers temporaires de ramper le serveur de fichiers, mais il n'est pas encore disponible. Nous essayons de faire une rampe complète sur la teneur locale SharePoint, qui est petite), mais le crawl ne finit jamais. Probablement parce que le composant index est indisponible.

J'ai deux options:

  • Supprimez l'application de service de recherche actuelle et commencez à partir de zéro, le recréant à nouveau.
  • Créez un nouveau composant d'index, clone la topologie active, ajoutez le nouveau composant Index au clone (en supprimant le cassé) et définissez la topologie du clone sur l'actif.

    Mais j'ai trouvé un moyen de créer un nouveau composant d'index. Est-ce possible?

Était-ce utile?

La solution

As it turned out, this was not an easy task.

Clone Search Topology

At fisrt I tried clone the search topology, replace the failing Index Component, and activate the clone topology - like this following the technet guide Manage the index component in SharePoint Server 2013:

if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) 
{
    Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}

$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "SharePointServerName"

# If the Search Service Instance isn't started, run the following command
#Start-SPEnterpriseSearchServiceInstance $hostA

# Wait for ONLINE status, check by using this
#Get-SPEnterpriseSearchServiceInstance $hostA 

# When ONLINE, make a clone
$ssa = Get-SPEnterpriseSearchServiceApplication
$active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active
$clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active

# Create a new Index Partition (0) - outputs IndexComponent2
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $hostA -IndexPartition 0

# Verify that the search service application is running. False=Running, True=Paused
$ssa.IsPaused() –ne 0

# Set the clone as the new topology (takes a while). If Index component is Degraded, this will run with no end
$ssa.PauseForIndexRepartitioning() 
Set-SPEnterpriseSearchTopology -Identity $clone

However, having an degraded index component made this action impossible. Reference: SharePoint 2013 Unable to change topology when Generation controller is not active

Create a new Topology

Next step, make a new, fresh topology (using this technet guide: Change the default search topology in SharePoint Server 2013).

if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) 
{
    Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}

$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "SharePointServerName"

# If the Search Service Instance isn't started, run the following command
#Start-SPEnterpriseSearchServiceInstance $hostA

# Wait for ONLINE status, check by using this
#Get-SPEnterpriseSearchServiceInstance $hostA 

# When ONLINE, make a new topology
$ssa = Get-SPEnterpriseSearchServiceApplication
$newTopology = New-SPEnterpriseSearchTopology -SearchApplication $ssa

# Create new components (one server only)
New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA

# Set the Admin Component without index
set-SPEnterpriseSearchAdministrationComponent -SearchApplication $ssa -SearchServiceInstance  $hostA

# Remove temp Index files, and recreate the folder
$IndexLocation = "C:\Index" # Change to another disk than system disk
Remove-Item -Recurse -Force -LiteralPath $IndexLocation -ErrorAction SilentlyContinue
mkdir -Path $IndexLocation -Force 

# Create new index component with a frech index folder
New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -RootDirectory $IndexLocation -IndexPartition 0

# Activate the topology (either one of the following works)
$newTopology.Activate()
#Set-SPEnterpriseSearchTopology -Identity $newTopology

Up on activation, I got a conflict and failed again.

Exception calling "Activate" with "0" argument(s): "Topology activation failed. An update conflict has occurred, and you must re-try this action. The object Repartition
Info Name=RepartitionInfo was updated by DOMAIN\SPFarm, in the OWSTIMER (11712) process, on machine SharePointServerName.  View the tracing log for more information about t
he conflict."
At line:1 char:1
+ $newTopology.Activate()
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SearchTopologyActivationException

Delete current failing Search Service Application

This should be easy, just use Central Administration > Manage Service Application, select the Search Service Application and click delete-button in the ribbon. Failed, again.

In order to make this to work, you need to stop the sptimerv4...

>net stop sptimerv4

... and delete cache files located in \ProgramData\Microsoft\SharePoint\Config\{Guids Folders} where cache.ini is located. CAUTION: Don't delete the cache.ini-file. Just edit the file and use another six digit random number. When you're done, start the service again. Reference: An update conflict has occurred, and you must re-try this action.

>net start sptimerv4

And finally the ribbon delete-button works. You're failing Search Service Application is gone. Now (finally) you can create a new Search Service Application, with a fresh topology and a working index component.

Autres conseils

I had the exact same issue as you described where the index component was broken after an Index Reset.

I was ready to roll my sleeves up and work through your detailed steps (thank you by the way) when I resolved it by using the Pause/Resume option.

Why did I try Pause/Resume? Well after I did an IISRESET I found that the Content Sources were stuck on "Paused". Thus I toggled the Pause/Resume option and miraculously it fixed the index component.

EDIT: This was a temporary fix. In the end I had to rebuild the Search Service Application from scratch.

Try this through Powershell:

$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "myserver1"
$ssa = Get-SPEnterpriseSearchServiceApplication
$topology = Get-SPEnterpriseSearchTopology -SearchApplication $ssa
New-SPEnterpriseSearchIndexComponent -SearchTopology $topology -SearchServiceInstance $hostA -IndexPartition 1

Here is more about managed Index Components: http://technet.microsoft.com/en-us/library/jj862355.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top