我们的Sharepoint 2010 Crawl数据库突然开始使用任何可用空间作为其日志文件(.ldf),我们添加的任何额外空间都会在一小时左右的时间内使用(例如10Gb在昨天几分钟内消失)。
从SharePoint Central管理员,我们可以看到没有正在运行的抓取(状态为'空闲'并且已填充'上次抓取已完成'字段)。
使用SQL Management Studio,我们可以看到我们有一个长时间运行的事务正在调用' proc_MSS_CrawlReportPreprocessChanges'此链接中描述的存储过程(在' SharePoint 2010/2013和TempDB的容量规划中......'部分): -
http://sharepoint.it-professional.co.uk/
-so' proc_MSS_CrawlReportPreprocessChanges'因此使用游标进行大量的TempDB操作。
这可以解释我们的问题,如果CRAWL正在运行,但爬行已经结束。
所以我的主要问题是,导致' proc_MSS_CrawlReportPreprocessChanges'要运行的程序以及我们如何阻止它?
请帮忙!
问题似乎与抓取报告有关,而不是与抓取本身的运行有关。
似乎有两个相关的SharePoint服务: -
这两项服务都在使用' MSSCrawlUrlChanges'表目前有超过6500万条记录。
'清理'上面的服务调用存储过程&proc; MSC_CrawlReportCleanup'传递一个参数,表示应该删除数据的天数(我无法找到在Sharepoint中配置参数值的位置) - 不确定该服务/程序如何但不清楚按预期清理表
因此,为了清除这个表,我已经停止了两个服务并手动运行程序,每次都减少参数值,每次清除几百万个记录: -
显然,这只是一个临时解决方案,但它已经阻止我们每小时左右耗尽磁盘空间并保持系统运行。我现在需要尝试确定为什么会发生这种情况以及为什么要清理这些问题。服务似乎没有起作用,加上使用David的建议让爬行回到正轨。
使用Powershell清除爬网日志以设置清理间隔而不是通过SQL调用存储过程的更好方法: -
//使用此方法获取搜索服务应用程序的ID
Get-SPServiceApplication |其中{$ _.TypeName -eq" Search Service Application"}
那么: -
//使用ID获取搜索应用
$ searchApp = Get-SPServiceApplication |凡{$ _.Id -eq" a21c3f70-9487-471e-a7ad-b80259c90ff7"}
//输出清理间隔
$ searchApp.CrawlLogCleanUpIntervalInDays
//将间隔设置为30(为90)
$ searchApp.CrawlLogCleanUpIntervalInDays = 30
$ searchApp.Update()
现在可以运行搜索应用程序搜索服务应用程序的'抓取日志清理'来自SharePoint Central Admin的任务将获取新的间隔(如果MSSCrawlUrlChanges'表中的大量记录可能需要以大于30天的数量开始,并以可管理的块重复,例如300,250,200等等。)
我现在希望较小的清理间隔能让我再次安排服务,但会监控一段时间,以确保问题不再发生。
答案 0 :(得分:1)
我以前从未见过这样的东西,但我建议你做的是完全停止在SharePoint中搜索服务。关闭后,如果存储过程仍在运行,则强制取消SQL中的存储过程。
重新启动服务并开始完全抓取。
如果问题再次出现,请重复上述操作,但这次是在开始完全抓取之前,删除并重新创建内容来源,然后再开始另一次完全抓取。
如果仍然发生我的建议可能会变得激烈,但你可能要考虑重置索引。这就是事情,但如果您不知道,如果您重置索引,您将失去所有分析。搜索从用户搜索习惯中学到的所有内容都将丢失。您搜索的任何报告(热门文档,热门搜索词等)都将丢失。它将不得不重建。根据您搜索的时长以及您的用户使用了多长时间,或者您是否有基于它的报告,可能会影响影响,因此您的决定就是您的。
我将采取的最后一步是删除整个搜索服务并重新创建(包括新数据库)。
如果您有Microsoft Premier支持,也可以给他们打电话。
我的建议可能看起来很激烈,但如果继续,搜索可能会使您的系统很快无法使用。如果这种情况发生在我的农场,我无法找到原因,或者其他人没有找到我没想到的解决方案,那么我会自己做这些步骤。
希望它有所帮助。