如何收缩超大的SharePoint_Config数据库

前言

  在已经运行了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,效果还是很明显的,整理出来很大一部分空间,不用经常做磁盘空间维护了。

附后

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

时间: 2024-09-23 11:01:17

如何收缩超大的SharePoint_Config数据库的相关文章

怎么发送超大(500GB)的数据库

这么大的数据量,限于成本考虑或者其它限制,无法临时/长期租用高带宽的上行和下行电子线路,只剩下传统存储设备的物理传递了. 大学时的计算机网络课程的老师,打过一个粗糙的比方,大概意思是带宽最大的网络,是一搜装满大容量硬盘的集装箱运输船.虽然这个网络的缺陷是延时巨大,但确实,带宽优势无与伦比. 具体到措施,综合考虑性价比后,无碍乎: 1.大容量移动硬盘3块,存储数据库.移动硬盘本身使用文件系统层证书加密(Windows的NTFS,Linux的EXT,OSX的HFS都支持,本身说明这个需求是很普遍的)

因稳定、收缩强 阿里云云数据库Redis(Kvstore)版获央视技术保障商点赞

据阿里云数据库团队透露,日前他们收到了一份特别的礼物--一封感谢信. 感谢信 这封感谢信来自央视技术保障商--北京中视广信科技有限公司,这是中央电视台旗下唯一从事信息技术开发和集成的公司,也是国内广电行业最大的IT软件开发商和技术服务提供商.他们在信中称,通过多次实践证明,阿里云云数据稳定性极高,每次使用阿里云,都能够让他们安心踏实的为央视这样的超级用户提供服务和技术支持. "阿里云计算有很强的伸缩能力,非常适合伸缩的业务."中视广信公司表示,这是一个非常默契和稳定的合作,因为他们所专

[翻译]为什么你不要收缩数据库文件

 我最大的一个热点问题是关于收缩数据文件,虽然在微软的时候,我自己写了相关收缩数据文件代码,我再也没有机会去重写它,让它操作起来更方便.我真的不喜欢收缩.   现在,不要混淆了收缩事务日志文件和收缩数据文件,当事务日志文件的增长失控或为了移除过多的VLF碎片(这里和这里看到金佰利的优秀文章),然而,收缩事务日志数据文件不要频繁使用(罕见的操作)并且不应是你执行定期维护计划的一部分.   收缩数据文件应该执行得甚至更少.这就是为什么--数据文件收缩导致产生了大量索引碎片,让我用一个简单并且你可以运

postgres 数据库有没有像sql server 收缩的功能

问题描述 postgres 数据库有没有像sql server 收缩的功能 postgres数据库大了 ,空间快没有了,像整理一下 有没有像sql server 收缩的功能, 或者有其他的什么方法

数据库收缩:NOTRUNCATE与TRUNCATEONLY

原文:数据库收缩:NOTRUNCATE与TRUNCATEONLY 在进行数据库收缩时,我们有2个可用选项:NOTRUNCATE,TRUNCATEONLY.这篇文章我们会详细讨论下这2个选项的具体区别. NOTRUNCATE 当你对数据库收缩命令提供NOTRUNCATE选项时,意味着SQL Server将你数据库末尾的页移到前面,那里可以找到一些空闲的未分配空间(将释放的空间继续保留在文件中).唯一的区别是数据文件本身不会收缩. 这就是说在数据库末尾的未使用空间还是没有重声明回给文件系统.用NOT

SQL Server数据库常用的T

1. 查看数据库的版本 select @@version 2.查看数据库所在机器操作系统参数 exec master..xp_msver 3. 查看数据库启动的参数 sp_configure 4.查看数据库启动时间 select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 查看数据库服务器名和实例名 print ''Server Name...............: '' + conve

《数据库基础及实践技术——SQL Server 2008》一3.4 修改数据库

3.4 修改数据库 创建完数据库后,用户在使用过程中可以根据需要对数据库的定义进行修改.修改数据库的操作主要包括如下几项: 扩大数据库空间. 缩小数据库空间. 添加和删除数据库文件. 创建文件组. 更改数据库所有者. 3.4.1 扩大数据库空间 如果在创建数据库时没有设置自动增长方式,则数据库在使用一段时间后可能会出现数据库空间不足的情况,这些空间包括数据空间和日志空间.如果数据空间不够,则意味着不能再向数据库中插入数据:如果日志空间不够,则意味着不能再对数据库数据进行任何修改操作,因为对数据的

SQL Server 2008 收缩清空大日志文件方法总结

由于SQL2008对文件和日志管理进行了优化,所以在SQL2000和2005中可以运行的如下命令,但在SQL2008中不支持no_log清空日志. 1.清空日志  代码如下 复制代码 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志:  代码如下 复制代码 BACKUP LOG 库名 WITH NO_LOG SQL 2008收缩清空日志方法: 1.在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完整模式,一定必务要再改回完整模式,不然数据库

mssql 数据库重命名及错误分析

mssql 数据库重命名及错误分析 1. 查看数据库的版本        select @@version    常见的几种SQL SERVER打补丁后的版本号:    8.00.194   Microsoft SQL Server 2000     8.00.384   Microsoft SQL Server 2000 SP1     8.00.532   Microsoft SQL Server 2000 SP2     8.00.760   Microsoft SQL Server 20