最小化运行简单恢复模型的开发人员框中的SQL事务日志文件大小

我们在开发环境中有很多SQL服务器,我们从来没有对数据库进行备份(TFS代码就足够了)。

(SharePoint)数据库都设置为简单的恢复模式,但日志文件(特别是SharePointconfiguration数据库)的日志文件变得相当大,并在SQL服务器上填满了我们的数据驱动器。

由于这些日志文件从来没有用于任何事情,我想build议如何最大限度地减less这些日志文件的大小 – 甚至如果可能的话禁用它们。

我不完全确定为什么即使在简单的日志logging(检查长时间运行的事务(DBCC OPENTRAN),但没有发现日志文件增长如此之大)。

我想日志文件不被截断的原因是,我们没有任何备份,因此检查点没有达到。

日志文件的自动增长被设置为自动增长10%,限制为2 GB,所以我想这就是为什么检查点(70%)没有到达这里。

在不牺牲性能的情况下(例如VLF碎片),保持日志文件小(最好是0)是最好的策略?

你是否正在执行任何可能进行重新编排或其他繁重工作的维护工作? 即使只是简单的恢复,日志将需要至less足够大,以保持对数据库发出的最大的交易。 尝试运行DBCC SQLPERF(LOGSPACE)并检查有多less日志文件实际上正在使用中。 如果它非常低,那么简单的恢复很可能按预期工作,日志文件可能只是在增长,因为它需要很大才能支持一些大于平均水平的事务。

开始运行以下查询以查看日志未被截断的原因:

select log_reuse_wait from sys.databases where name = '<database name>' 

日志重用的原因说明可以在这里find: http : //msdn.microsoft.com/en-us/library/ms178534.aspx

尝试运行这个查询。 这是由MS(我没有文章得心应手),最初打算在SBS2008上运行的Sharepoint,但应该适用于Sharepoint的任何实例。 确保validation数据库名称和path与您的实例相匹配。

 declare @ConfigDB varchar(255); declare @ConfigDBLog varchar(255); declare @ConfigDBCmd varchar(255); select @ConfigDB = name from sys.databases where name like 'SharePoint_Config_%'; set @ConfigDBCmd = 'BACKUP database [' + RTRIM(@ConfigDB) + '] to disk=''C:\windows\temp\before.bkf'''; execute(@ConfigDBCmd); set @ConfigDBCmd = 'use [' + RTRIM(@COnfigDB) + ']'; execute(@ConfigDBCmd); set @ConfigDBCmd = 'BACKUP LOG [' + RTRIM(@ConfigDB) + '] WITH TRUNCATE_ONLY'; execute(@ConfigDBCmd); set @ConfigDBCmd = 'use [' + RTRIM(@COnfigDB) + ']'; execute(@ConfigDBCmd); select @ConfigDBLog = name from sys.database_files where name like 'SharePoint_Config%_log'; set @ConfigDBCmd = 'use [' + RTRIM(@ConfigDB) + '] DBCC SHRINKFILE([' + RTRIM(@ConfigDB) + '_log],1)'; execute(@ConfigDBCmd); set @ConfigDBCmd = 'BACKUP database [' + RTRIM(@ConfigDB) + '] to disk=''C:\windows\temp\after.bkf'''; execute(@ConfigDBCmd); go 

仔细检查你的开发数据库是否有简单的恢复模式。

 select name, recovery_model_desc from sys.databases 

您需要一个日志文件:它不能被禁用或设置为零