【发布时间】:2016-01-06 19:16:48
【问题描述】:
我们的 Sharepoint 2010 Crawl 数据库突然开始为其日志文件 (.ldf) 使用任何可用空间,我们添加的任何额外空间都会在一个小时左右内被使用(例如,10Gb 在昨天几分钟内消失)。
从 SharePoint Central Admin 中,我们可以看到没有正在运行爬网(状态为“空闲”并且填充了“上次爬网完成”字段)。
使用 SQL Management Studio,我们可以看到我们有一个长时间运行的事务正在调用此链接中描述的“proc_MSS_CrawlReportPreprocessChanges”存储过程(在“SharePoint 2010/2013 和 TempDB 容量规划...”部分):-
http://sharepoint.it-professional.co.uk/
-so 'proc_MSS_CrawlReportPreprocessChanges' 使用游标,因此有很多 TempDB 操作。
如果抓取正在运行但抓取已完成,这将解释我们的问题。
所以我的主要问题是,是什么导致“proc_MSS_CrawlReportPreprocessChanges”程序运行,我们如何才能停止它?
请帮忙!
更新(2015 年 12 月 29 日)
问题似乎与爬网报告有关,而不是与爬网本身的运行有关。
似乎有两个相关的 SharePoint 服务:-
- 搜索应用搜索服务应用的爬取日志报告
- 搜索应用程序搜索服务应用程序的爬网日志清理
这两个服务都使用“MSSCrawlUrlChanges”表,该表目前有超过 6500 万条记录。
上面的“清理”服务调用存储过程“proc_MSS_CrawlReportCleanup”,传入一个参数,表示应该删除数据的天数(我找不到在 Sharepoint 中配置参数值的位置) - 不知道如何但显然,此服务/程序没有按预期清理表格。
所以为了清除这张表我已经停止了两个服务并手动运行程序,每次减小参数值以每次清除几百万条记录:-
- exec proc_MSS_CrawlReportCleanup 300
显然,这只是一个临时解决方案,但它阻止了我们每隔一小时左右就耗尽磁盘空间并保持系统运行。我现在需要尝试确定为什么会发生这种情况以及为什么“清理”服务似乎没有工作,并使用 David 的建议让爬网回到正轨。
更新(2016 年 1 月 6 日)
使用Powershell设置清理间隔而不是通过SQL调用存储过程来清除爬取日志的更好方法:-
//使用它来获取搜索服务应用程序的ID
获取-SPServiceApplication |其中 {$_.TypeName -eq "搜索服务应用程序"}
那么:-
//使用ID获取搜索应用
$searchApp = 获取-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 等)。
我现在希望较小的清理间隔能够让我再次安排服务,但会监视一段时间以确保问题不会再次发生。
【问题讨论】:
标签: sharepoint-2010