一般情况下对IT管理者来说,在SharePointFarm中维护Feature,更喜欢使用命令行实现,这样可以省去登录到具体站点的操作。比如IT接到enduser的一个需求,要开启SiteCollectionFeature,如果直接操作......
2023-01-12
在已经运行了2年多的SharePoint服务器上,发现SharePoint_Config的数据库文件越来越大,已经达到90几个GB,收缩可以减小20几个GB,但是一周以后又会恢复到90几个GB大小,甚是奇怪。
因为磁盘空间不足,一共只有200GB大小,还有大大小小网站若干,用来存放照片、视频、文档等,所以决定好好研究一下这个问题。
经过不懈的谷歌,发现了问题症结所在,现在分享给大家,希望对遇到类似的问题的人,有个参考。
对了,注意。。这里是指数据库文件,不是数据库的日志文件,如果是日志文件的话,在数据库管理工具中,修改备份模式为简单,直接收缩就好了!
1、在数据库服务器中打开Microsoft SQL Server Management Studio,找到SharePoint_Config数据库,然后执行下面的语句:
EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"
2、看到执行的结果,就是每个数据库表的大小,然后看到TimerJobHistory这个表的行数非常多,大小也非常的大。
3、谷歌有类似的解决方案,说是因为job-delete-job-history这个Job运行失败,造成了Job运行的历史记录不能被及时清理,造成了配置数据库越来越大。所以运行下面的脚本,会清理一年以来的积累,而这个Job默认每周运行一次,清理上周积累下来的历史记录。
$history = get-sptimerjob | where-object {$_.name -eq “job-delete-job-history”}
$history.daystokeephistory = 365
$history.update()
$history.runnow()
4、运行完毕以后,还要将daystokeephistory数值改回7天,如下图:
5、可以看到运行以后,确实有个Job再运行,不过我这里可能由于已经超过365天了,所以也没有起作用,Job依旧运行Failed。所以只能继续谷歌,寻找解决方案。
6、经过不懈的查找,发现了一个ps脚本,把下面脚本,存成一个ps1文件,执行一下,会起作用(至少我这里已经起作用了,会删掉多余的历史记录);
Add-PSSnapin Microsoft.SharePoint.PowerShell Write-Host "Clearing Down Timer Job History" $daysToKeep = 300 $daysToPurgeInOneLoop = 5 while ($daysToKeep -gt 0) { $history = get-sptimerjob | where-object {$_.name -eq “job-delete-job-history”} Write-Host " " Write-Host -NoNewLine "Setting Days to Keep:" Write-Host -ForegroundColor Green $daysToKeep $history.DaysToKeepHistory = $daysToKeep $history.update() Write-Host -ForegroundColor Green "Starting Purge Job" $lastTimeJobRan = $history.LastRunTime $history.runnow() Write-Host -NoNewLine -ForegroundColor Green "Waiting For Purge Job to Complete" $jobFinished = $false while ($jobFinished -eq $false) { Start-Sleep -Seconds 2 $runningJob = Get-SPTimerJob $history.Name Write-Host -NoNewLine -ForegroundColor Yellow "." if ($lastTimeJobRan -ne $runningJob.LastRunTime) { $jobFinished = $true } } Write-Host " " Write-Host -ForegroundColor Green "Ending Purge Job" $daysToKeep = $daysToKeep - $daysToPurgeInOneLoop } Write-Host -ForegroundColor Green "Setting Final Job History Retention to 3 days, and schedule to run daily @ 5am" $history.DaysToKeepHistory = 3 $history.update() $history.runnow() Set-SPTimerJob -Identity $history -Schedule "Daily at 05:00" Write-Host -ForegroundColor Yellow "Please check row counts on dbo.TimerJobHistory Table in Config DB to ensure run complete"
结束语
当然,执行PowerShell的命令需要很长时间,我这里用了大概1天时间,将90多个GB的SharePoint_Config收缩到了15个GB,效果还是很明显的,整理出来很大一部分空间,不用经常做磁盘空间维护了。
相关文章
一般情况下对IT管理者来说,在SharePointFarm中维护Feature,更喜欢使用命令行实现,这样可以省去登录到具体站点的操作。比如IT接到enduser的一个需求,要开启SiteCollectionFeature,如果直接操作......
2023-01-12
我们经常会在SharePoint网站集的权限列表中看到某个user有LimitedAccessPermission,但是我们都知道或者试过,在SharePointsitecollection中没有办法直接添加user赋予LimitedAccess权限,并且LimitedAccess这个......
2023-01-12
在这样的场景下,比如统计员工的个人信息,IT会在SharePoint中新建list,加一些需要填写的栏位,然后让公司员工登录填写。这时候比起大家都能看到彼此信息而言,从公司角度更想让员工只能......
2023-01-12
大多数企业使用SharePoint文档库时,都会建议EndUser在编辑文档前先做CheckOut动作,这样可以保证文档在当前用户编辑过程中,其他人只能view而不能edit,防止多人同时修改同一文件互相影响的......
2023-01-12
为了记录SharePointLibrary/List中file/Item的修改情况,ITAdministrator会在List/Library的VersionSettings中开启Version管控设置。之后用户每次编辑item/file保存就会生成一个新的version记录,这样我们就会知道......
2023-01-12