怎样收缩超大的SharePoint_Config数据库

前言

  在已经执行了2年多的SharePointserver上,发现SharePoint_Config的数据库文件越来越大,已经达到90几个GB,收缩能够减小20几个GB,可是一周以后又会恢复到90几个GB大小。甚是奇怪。

  由于磁盘空间不足,一共仅仅有200GB大小。还有大大小小站点若干,用来存放照片、视频、文档等。所以决定好好研究一下这个问题。

  经过不懈的谷歌,发现了问题症结所在,如今分享给大家,希望对遇到相似的问题的人,有个參考。

  对了,注意。。这里是指数据库文件,不是数据库的日志文件。假设是日志文件的话,在数据库管理工具中。改动备份模式为简单,直接收缩就好了!

  1、在数据库server中打开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,效果还是非常明显的,整理出来非常大一部分空间。不用常常做磁盘空间维护了。

附后

  PowerShell命令的參考地址:http://sharepoint.it-professional.co.uk/?p=228

时间: 2024-11-03 21:47:28

怎样收缩超大的SharePoint_Config数据库的相关文章

如何收缩超大的SharePoint_Config数据库

前言 在已经运行了2年多的SharePoint服务器上,发现SharePoint_Config的数据库文件越来越大,已经达到90几个GB,收缩可以减小20几个GB,但是一周以后又会恢复到90几个GB大小,甚是奇怪. 因为磁盘空间不足,一共只有200GB大小,还有大大小小网站若干,用来存放照片.视频.文档等,所以决定好好研究一下这个问题. 经过不懈的谷歌,发现了问题症结所在,现在分享给大家,希望对遇到类似的问题的人,有个参考. 对了,注意..这里是指数据库文件,不是数据库的日志文件,如果是日志文件

4-03收缩数据库

收缩数据库: 删除数据库的每个文件中已经分配但还没有使用的页. 收缩数据库空间自动减少. 收缩方式以及步骤: 自动收缩数据库: 右击你要操作的数据库,点击属性. 然后点击选项吧自动收缩改为True. 手动收缩数据库: 点击你要操作的数据库,点击任务,点收缩,再点数据库. 可以在下面的写上收缩文件后使用的最大空间.

收缩SQL SERVER数据库

如果数据库设计的尺寸过大,即使删除了数据库中大量数据,这时数据库依旧会占用大量磁盘资源.因此,需要根据用户实际需求,对数据库进行收缩. 收缩的3种方式: 1.AUTO_SHRINK 基本格式: ALTER DATABASE database_name SET AUTO_SHRINK ON 将该选项设为ON后,数据库引擎会自动收缩具有可用空间的数据库. 2.DBCC SHRINKDATABASE 基本格式: DBCC SHRINKDATABASE('database_name',target_pe

SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的

当你在SqlServer创建数据库的时候可以指定数据库文件的初始大小,比如下图中我们将新创建的数据库MyDB的大小设置成了1024MB 那么你建好的数据库的确也就会占用1024MB左右的磁盘空间 不过使用存储过程sp_spaceused可以看到其中有1021.85 MB的空间是MyDB占用着并未使用. 于是我们在想是不是可以用DBCC ShrinkDatabase或DBCC ShrinkFile语句收缩未使用的数据库空间 dbcc shrinkdatabase('MyDB',10) 但是执行Sh

数据库镜像中成功收缩事务日志文件 (转载)

数据库镜像中成功收缩事务日志文件 数据库已经运行在数据库镜像的时候怎么收缩事务日志文件呢?? 我们有一个产品数据库发现事务日志文件已经到到了60GB,而数据库本身才30GB.需要收缩事务日志文件. 经过一个礼拜的观察,平均没有有1.5GB的日志,99%的日志是在晚上产生的,周末有16GB的日志,看来大部分是非工作时间批处理产生的. 我觉得收缩日志文件,怎么做呢??google来半天也没什么好的办法,大部分说是要切换到simple模式,重新构建数据库镜像数据库.这对产品环境影响比较大. 只有自己摸

sql server 数据库收缩

限制和局限 收缩后的数据库不能小于数据库的最小大小. 最小大小是在数据库最初创建时指定的大小,或是上一次使用文件大小更改操作(如 DBCC SHRINKFILE)设置的显式大小. 例如,如果数据库最初创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小只能收缩到 10 MB,即使已经删除数据库的所有数据也是如此. 不能在备份数据库时收缩数据库. 反之,也不能在数据库执行收缩操作时备份数据库. 遇到 xVelocity 内存优化的列存储索引时,DBCC SHRINKDATABASE

数据库有基础知识

一.基本概念  DBMS:Database Management System数据库管理系统,是一种操纵和管理数据库的大型软件,用于建立.使用和维护数据库. RDBMS:Relational Database Management System关系型数据库管理系统,就是在数据库管理系统的基础上增加关系,通过数据.关系和对数据的约束三者组成的数据模型来存放和管理数据. SQL:Structed Query Language结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和

数据库读书笔记(1)

一.基本概念  DBMS:Database Management System数据库管理系统,是一种操纵和管理数据库的大型软件,用于建立.使用和维护数据库. RDBMS:Relational Database Management System关系型数据库管理系统,就是在数据库管理系统的基础上增加关系,通过数据.关系和对数据的约束三者组成的数据模型来存放和管理数据. SQL:Structed Query Language结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和

第三章 数据库备份和还原

一.数据库恢复模式 1.完整:能够让数据库恢复到出现故障的时间点和指定时间点(主要是日志文件完 整备份) 2.大容量日志:数据库日志不记录对数据修改的时间(即指定的时间点)效率高只 能通过日志恢复到故障点 3.简单:对事务日志不活跃的逻辑日志文件覆盖重复利用(日志写满后覆盖完成的 提交的事务日志)不能利用日志还原数据库,只能利用完整数据库文件恢 复 1)简单恢复模式 数据库备份和还原策略 数据小 数据变化不大 数据库不能恢复到出现故障的时间点(重复擦写日志文件) 完整数据库备份  完整的数据库备