维护计划重建idex后,事务日志变得巨大

Fed*_*ust 4 sql-server-2008 backup maintenance transaction-log

几天前,我正在使用 SQL Server 2008 中的维护计划测试一些东西。

我创建了一个来重建索引并每周进行一次完整备份。(我知道,我今天发现了坏事)。

问题是,由于事务日志增长了很多(大约 80gb,db 是 60gb),备份没有运行。现在我一整天都在谷歌上搜索,看看是否有办法将事务日志缩小到以前的大小,比如 200mb。

更新

这是在我们的生产服务器上,维护计划如下:

重建索引

成功备份完整数据库

成功时 删除超过两周的备份。

这还没有完成,它在某个时候坏了,所以我想重建索引花了太长时间。所以备份没有发生。

我们还每小时备份一次交易日志。

这可能吗?为什么会发生这种情况?我知道在重建时它会在事务日志或类似的东西中创建索引的副本,但是有可能摆脱这个副本吗?

这就是我在 Job History 上的内容,所以看起来由于某种原因它在创建索引时失败了,并且由于计划成功进行备份,它停在那里。

信息 :

以用户身份执行:SHOCKLOGIC\DB1$。...ress: 2013-08-05 03:01:03.43 Source: Rebuild Index Task Executing query "ALTER INDEX [PK_ActivitiesPerGroup] ON [dbo].[Acti...".: 12% Complete End Progress Progress: 2013- 08-05 03:01:03.43 来源:重建索引任务执行查询“USE [Eventlogic]”。:完成 12% 结束进度进度:2013-08-05 03:01:03.52 来源:重建索引任务执行查询“ALTER INDEX [PK_ActivitiesPerHotelCat] ON [dbo].[A...".: 12% complete End Progress Progress: 2013-08-05 03:01:03.52 Source: Rebuild Index Task Executing query "USE [Eventlogic] ".: 12% complete End Progress Progress: 2013-08-05 03:01:03.69 Source: Rebuild Index Task Executing query "ALTER INDEX [PK_ActivitiesPerHotelCat_OLD] ON [dbo...".:Activity _B7BCF0184055F19F] ON [d...".: 15% complete End Progress Progress: 2013-08-05 03:01:57.77 Source: Rebuild Index Task Executing query "USE [Eventlogic] ".: 15% complete End Progress Progress :2013-08-05 03:01:57.88 来源:重建索引任务执行查询“ALTER INDEX [PK_AddressConfirmationScreenFieldsLan...”。:完成 15% 结束进度进度:2013-08-05 03:01:57.88 来源:重建索引... 包执行 fa... 该步骤失败。

RLF*_*RLF 5

重建索引需要足够的空间来创建新索引。一个简化的经验法则似乎是您需要大约 120% 的原始索引使用的空间。这可能在数据库或 tempdb 中,具体取决于 SORT_IN_TEMPDB 是 ON 还是 OFF。

如果可能,让 SORT_IN_TEMPDB = ON 减少一些已完成的日志记录。

如果在 LOG 备份之间重建所有索引,则用于重新索引所有索引的所有日志都将在日志文件中。因此,大重组需要有合适的磁盘空间、日志空间等资源。(例如,您可以尝试一次重组一张表,并在每次重组后进行日志备份。)

对于索引空间需求:http : //msdn.microsoft.com/en-us/library/ms191183(v=sql.110) .aspx对于事务日志:http : //msdn.microsoft.com/en-us/library /ms184246.aspx

您可以尝试更改为最少日志记录的恢复模型,例如 SIMPLE 或 BULK_LOGGED。但是,对于生产数据库,您必须权衡负面影响并确定什么是最好的。(为了重新组织数据库而更改为 SIMPLE 之后可能应该更改为 FULL 并进行 FULL 备份。)

可以收缩日志文件,但只能在日志备份释放高阶页面之后。(这通常是一个循环备份日志,DBCC SHRINKFILE,然后检查空间再试一次。)

对于收缩日志文件,不要使用 DBCC SHRINKDATABASE。使用 DBCC SHRINKFILE(日志文件名、目标大小)。