سؤال

أنا في تطبيق خدمة البحث الزحف خادم الملفات التي تحتوي على عناصر 480k. يحتوي SharePoint Server على قرص نظام فقط مع مساحة مجانية 20 جيجابايت، ولا توجد خوادم أخرى متوفرة. عند الزحف خادم الملفات، خرج قرص النظام من المساحة نظرا لأن مجلد الفهرس الافتراضي موجود على محرك الأقراص C. توقفنا عن الزحف، قام بإعادة تعيين الفهرس، وحصلت على تطبيق خدمة البحث قيد التشغيل مرة أخرى، لكن مكون الفهرس مكسور (فحصه في صفحة إدارة البحث، ومن خلال PowerShell).

قد طلبنا قرص جديد لملفات TEMP من الزحف خادم الملفات، لكنه غير متوفر بعد. نحن نحاول إجراء زحف كامل على محتوى SharePoint المحلي، وهو صغير)، لكن الزحف لا ينتهي أبدا. ربما لأن مكون الفهرس غير متوفر.

لدي خياران:

  • إزالة تطبيق خدمة البحث الحالي، والبدء من الصفر، وإعادة إنشاءه مرة أخرى.
  • إنشاء مكون فهرس جديد، استنساخ الطوبولوجيا النشطة، إضافة مكون الفهرس الجديد إلى استنساخ (إزالة الملف المكسور)، وتعيين طوبولوجيا استنساخ إلى واحد نشط.

    لكنني لم يجد طريقة لإنشاء مكون فهرس جديد. هل من الممكن؟

هل كانت مفيدة؟

المحلول

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.

نصائح أخرى

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top