SQL Server 2008 - 缩小事务日志 - 任何自动化方式?

Alb*_*ert 6 sql sql-server sql-server-2005 sql-server-2008

前几天我进去检查了我的交易日志,它像15GB一样疯狂.我运行了以下代码:

USE mydb
GO
BACKUP LOG mydb WITH TRUNCATE_ONLY
GO
DBCC SHRINKFILE(mydb_log,8)
GO
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,缩小到8MB ...但有问题的数据库是一个Log Shipping Publisher,日志已经回升到大约500MB并且增长很快.

除了创建自定义"执行T-SQL语句任务"维护计划任务以及将其挂钩到我的日志备份任务之外,有没有办法自动化这个日志缩小?如果这是最好的方式那么好......但我只是认为SQL Server会有更好的方法来解决这个问题.我认为它应该在您进行日志备份时自动缩小,但这种情况不会发生(可能是因为我的日志传送,我不知道).

这是我目前的备份计划:

  • 每晚完整备份
  • 事务日志备份每天一次,上午晚些时候(也许挂钩日志缩小到这个......不过每天都不需要缩小)

或者也许我在运行完整备份任务后每周运行一次?你们都觉得怎么样?

Rem*_*anu 18

如果文件每晚以500 MB的速度增长,则只有一个正确的操作:将文件预先增长到500MB并保留在那里.缩小日志文件是有害的.使日志文件自动增长也具有破坏性.

  • 你在正常操作期间点击文件增长零填充初始化,降低了性能
  • 您的日志会以较小的增量增长,从而创建许多虚拟日志文件,从而导致较差的运行性能
  • 缩小期间,您的日志会碎片化.虽然没有数据文件碎片那么糟糕,但日志文件碎片仍会影响性能
  • 有一天,500MB的每日增长将耗尽磁盘空间,并且您希望该文件是预先生成的

你不必接受我的话,你可以在一些MVP博客上阅读他们对日志和文件缩减的做法的定期说明:

还有更多,我只是厌倦了链接它们.

每次缩小日志文件时,仙女都会失去翅膀.

  • +10理智.日志缩小是我热切地提倡使用嵌套的72点闪烁警告对话框和"OK"按钮的地方,你必须用鼠标指针在屏幕上追逐. (3认同)

Cad*_*oux 5

我认为更频繁的事务日志备份.

  • @Albert:最有可能发生截断 - 文件没有自动缩小.请参阅Joe L.的回答 - 实际收缩日志文件是一个单独的步骤 (2认同)
  • @Albert,如果您进行更频繁的日志备份,非活动事务将被截断,从而在日志中释放新事务的空间,而无需缩小日志文件本身. (2认同)