Forum Discussion
SharePoint 2016 search crawls not running automatically
AndresGorzelany KB5002118 and KB5002183 Security Updates from Microsoft SharePoint Enterprise Server 2016
- dylanbr0wnJun 27, 2022Copper Contributor
AndresGorzelany Ultimately, we had to fully recreate our SSA instance. Nothing we tried was able to bring back some of the missing services that, presumably when the update happened, got out of sync between our servers or had disappeared entirely.
We did attempt a synchronization using the following which seem to work for others:
$svc = Get-SPEnterpriseSearchServiceInstance $svc.Synchronize()However, this revealed what I assume was a misconfiguration between our servers and led to the complete shutdown of our SSA. It looked as if our other server had, at some point, had been configured to run the search service so HealthMonitor would shutdown any attempt of search to function on the desired server.
I think the biggest issue outside of the misconfiguration was that our Indexing Schedule Manager job was completely gone, without this, no crawl would be scheduled on our desired search server. We could not find a way to bring this back during our troubleshooting with Microsoft.
We ended up using the following script to create a new search instance:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue # Specify the Settings for the Search Service Application $ServerName = (Get-ChildItem env:computername).value $IndexLocation = "E:\Search Index" $SearchServiceApplicationName = "Search Service Application 2016" $SearchServiceApplicationProxyName = "Search Service Application 2016 Proxy" $SearchDatabaseServer = "Name of Database server" $SearchServiceApplicationDatabase = "SP2016_Search_Service" $SearchAppPoolName = "Search Service Application pool" $SearchAppPoolAccount = Get-SPManagedAccount "" #Check if Managed account is registered already Write-Host -ForegroundColor Yellow "Checking if the Managed Accounts already exists" $SearchAppPoolAccount = Get-SPManagedAccount -Identity $SearchAppPoolAccount -ErrorAction SilentlyContinue If ($SearchAppPoolAccount -eq $null) { Write-Host "Please Enter the password for the Service Account..." $AppPoolCredentials = Get-Credential $SearchAppPoolAccount $SearchAppPoolAccount = New-SPManagedAccount -Credential $AppPoolCredentials } #*** Step 1: Create Application Pool for Search Service Application **** #Get the existing Application Pool $SearchServiceAppPool = Get-SPServiceApplicationPool -Identity $SearchAppPoolName -ErrorAction SilentlyContinue #If Application pool Doesn't exists, Create it if (!$SearchServiceAppPool) { $SearchServiceAppPool = New-SPServiceApplicationPool -Name $SearchAppPoolName -Account $SearchAppPoolAccount write-host "Created New Application Pool" -ForegroundColor Green } #*** Step 2: Start Search Service Instances *** Start-SPEnterpriseSearchServiceInstance $ServerName -ErrorAction SilentlyContinue Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance $ServerName -ErrorAction SilentlyContinue #*** Step 3: Create Search Service Application **** # Get the Search Service Application $SearchServiceApplication = Get-SPEnterpriseSearchServiceApplication -Identity $SearchServiceApplicationName -ErrorAction SilentlyContinue # Create the Search Service Application, If it doesn't exists! if(!$SearchServiceApplication) { $SearchServiceApplication = New-SPEnterpriseSearchServiceApplication -Name $SearchServiceApplicationName -ApplicationPool $SearchServiceAppPool -DatabaseServer $SearchDatabaseServer -DatabaseName $SearchServiceApplicationDatabase write-host "Created New Search Service Application" -ForegroundColor Green } #*** Step 4: Create Search Service Application Proxy **** #Get the Search Service Application Proxy $SearchServiceAppProxy = Get-SPEnterpriseSearchServiceApplicationProxy -Identity $SearchServiceApplicationProxyName -ErrorAction SilentlyContinue # Create the Proxy, If it doesn't exists! if(!$SearchServiceAppProxy) { $SearchServiceAppProxy = New-SPEnterpriseSearchServiceApplicationProxy -Name $SearchServiceApplicationProxyName -SearchApplication $SearchServiceApplication write-host "Created New Search Service Application Proxy" -ForegroundColor Green } #*** Step 5: Create New Search Topology $SearchServiceInstance = Get-SPEnterpriseSearchServiceInstance -Local #To Get Search Service Instance on Other Servers: use - $SearchServiceAppSrv1 = Get-SPEnterpriseSearchServiceInstance -Identity "S-SP-02" # Create New Search Topology $SearchTopology = New-SPEnterpriseSearchTopology -SearchApplication $SearchServiceApplication #*** Step 6: Create Components of Search New-SPEnterpriseSearchContentProcessingComponent –SearchTopology $SearchTopology -SearchServiceInstance $SearchServiceInstance New-SPEnterpriseSearchAnalyticsProcessingComponent –SearchTopology $SearchTopology -SearchServiceInstance $SearchServiceInstance New-SPEnterpriseSearchCrawlComponent –SearchTopology $SearchTopology -SearchServiceInstance $SearchServiceInstance New-SPEnterpriseSearchAdminComponent -SearchTopology $SearchTopology -SearchServiceInstance $SearchServiceInstance #Prepare Index Location Remove-Item -Recurse -Force -LiteralPath $IndexLocation -ErrorAction SilentlyContinue MKDIR -Path $IndexLocation -Force #Create Index and Query Components New-SPEnterpriseSearchIndexComponent –SearchTopology $SearchTopology -SearchServiceInstance $SearchServiceInstance -RootDirectory $IndexLocation New-SPEnterpriseSearchQueryProcessingComponent –SearchTopology $SearchTopology -SearchServiceInstance $SearchServiceInstance #*** Step 7: Activate the Toplogy for Search Service *** $SearchTopology.Activate() # Or Use: Set-SPEnterpriseSearchTopology -Identity $SearchTopology- Jun 27, 2022Yeap, re-creating the Search was probably the last resort... I am glad you could get it running and thanks for sharing that to the community