前言

  在已经执行了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

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

  1. 如何收缩超大的SharePoint_Config数据库

    前言 在已经运行了2年多的SharePoint服务器上,发现SharePoint_Config的数据库文件越来越大,已经达到90几个GB,收缩可以减小20几个GB,但是一周以后又会恢复到90几个GB大 ...

  2. 数据库收缩:NOTRUNCATE与TRUNCATEONLY

    在进行数据库收缩时,我们有2个可用选项:NOTRUNCATE,TRUNCATEONLY.这篇文章我们会详细讨论下这2个选项的具体区别. NOTRUNCATE 当你对数据库收缩命令提供NOTRUNCAT ...

  3. SQL Server 收缩数据库

    //删除大量数据 /*** * * BEGIN TRANSACTION; * SELECT * INTO #keep FROM Original WHERE CreateDate > '2011 ...

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

    当你在SqlServer创建数据库的时候可以指定数据库文件的初始大小,比如下图中我们将新创建的数据库MyDB的大小设置成了1024MB 那么你建好的数据库的确也就会占用1024MB左右的磁盘空间 不过 ...

  5. SQL Server中怎么查看每个数据库的日志大小,以及怎么确定数据库的日志文件,怎么用语句收缩日志文件

    一,找到每个数据库的日志文件大小 SQL Server:查看SQL日志文件大小命令:dbcc sqlperf(logspace) DBA 日常管理工作中,很重要一项工作就是监视数据库文件大小,及日志文 ...

  6. DBCC SHRINKFILE收缩日志/收缩数据库/收缩文件

    DBCC SHRINKFILE 收缩相关数据库的指定数据文件或日志文件大小. 语法 DBCC SHRINKFILE    ( { file_name | file_id }        { [ ,t ...

  7. 数据库技术丛书:SQL Server 2016 从入门到实战(视频教学版) PDF

    1:书籍下载方式: SQL Server2016从入门到实战 PDF 下载  链接:https://pan.baidu.com/s/1sWZjdud4RosPyg8sUBaqsQ 密码:8z7w 学习 ...

  8. SQLServer文件收缩-图形化+命令

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 收缩前 图形化演示: 不仅仅可以收缩日记文件,数据库文件也是可以收缩的,只不过日记收缩比 ...

  9. sqlserver 事务日志过大 收缩方法解决方案

    sqlserver 事务日志过大,可能会导致备份失败或者数据库出现异常,所以要定期清除sqlserver 事务日志 建议:为了防止日志文件无限扩大,可以对日志文件作一些限制. 清除sqlserver事 ...

随机推荐

  1. 在Qt Creator的项目中添加头文件和库

    在Qt Creator中的工程中,工程通过.pro文件管理. 额外需要连接的连接库unix:LIBS += -L your_lib_path -lyour_libwin32:LIBS += your_ ...

  2. 11.Bean2Document-BEAN转document

    1. package com.glodon.gspm.adapter.plugin.common; import com.glodon.cloudt.tenancy.context.TenantCon ...

  3. Flume的Storage&Master

    storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase,分布式存储等. Master是管理协调Agent和Collector的配置等信息,是flume集群的控制器.

  4. react实战项目-很适合进阶

    前言 前段时间学习完了React的基础,自己网上找了一些实战项目,做了几个感觉项目不是很全面,就想做一个完整的项目来提升自己的React水平.以前学习Vue的时候,就看过bailicangdu大神的v ...

  5. 阶段复习-.NET下托管资源与非托管资源的小记

    托管资源由由程序员负责分配,在系统的二级缓存中,GC自动回收释放:而非托管资源也是由程序员负责分配,资源的释放回收也是由程序员负责,使用Dispose或者析构函数对资源进行回收,常见的非托管资源是包装 ...

  6. 洛谷 P2067 Cytus-Holyknight

    P2067 Cytus-Holyknight 题目背景 本人最初作 以此纪念伟大的ios.安卓.PSV平台音乐游戏<cytus> 后续将不断更新. -------------Chapter ...

  7. 地图上显示div点位

    功能核心:  地理坐标转屏幕坐标 用到的插件:jquery  animo动画插件 核心代码: var point = new Point(lon, lat, map.spatialReference) ...

  8. php操作zip压缩文件

    php操作zip压缩文件 一.总结 1.php操作zip:php可以操作zip压缩文件,通过 ZZIPLIB扩展库,这些扩展库可以通过composer安装,或者某些版本的php会自带 2.完美操作zi ...

  9. 关于C++中的内存泄露

    1.c++内存泄漏的定义: 内存泄漏(memory leak)是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况.内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失 ...

  10. 1.3 Quick Start中 Step 2: Start the server官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Step 2: Start the server Step : 启动服务 Kafka ...