SharePoint發行版本有SharePoint2003、SharePoint2007、Sharepoint 2010、SharePoint2013和SharePoint2016。SharePoint提供了功能強大的團隊協作環境,使得組織能夠在整個組織內部實現整合、組織、查找和提供 SharePoint站點。 在已經運行了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.PowerShellWrite-Host "Clearing Down Timer Job History"$daysToKeep = 300$daysToPurgeInOneLoop = 5while ($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 = $falsewhile ($jobFinished -eq $false){Start-Sleep -Seconds 2$runningJob = Get-SPTimerJob $history.NameWrite-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,效果還是很明顯的,整理出來很大一部分空間,不用經常做磁盤空間維護了。 Sharepoint 可以幫助企業用戶輕松完成日常工作。 |
溫馨提示:喜歡本站的話,請收藏一下本站!