【问题标题】:How to split SQL Server Transaction Log如何拆分 SQL Server 事务日志
【发布时间】:2012-09-11 03:02:43
【问题描述】:

我的数据库服务器的磁盘空间刚刚用完。事务日志占用了 100GB 以上的空间,而我只有 30GB 的可用空间。因此,一些交易需要无限的时间来处理,从而导致 9002 错误。

我想问有没有一种方法可以拆分此事务日志并删除其中一个以获取一些可用空间。现在我无法进行备份或通过添加另一个磁盘来增加磁盘空间。

如果有人有比拆分事务日志更好的解决方案,那就太好了。

【问题讨论】:

    标签: sql-server database-design transaction-log


    【解决方案1】:

    这里有很多关于处理大型日志的好资源:

    https://sqlblog.org/2009/07/27/oh-the-horror-please-stop-telling-people-they-should-shrink-their-log-files

    基本上,您需要获得更多空间、备份日志或切换到数据库的简单恢复模式。每种方法都有其优缺点。

    【讨论】:

      【解决方案2】:

      实践中

      数据、日志和操作系统应该在不同的磁盘上... 比如说 C 代表操作系统,E 代表数据,L 代表日志。

      如果您的事务日志在事务备份后没有缩小,那么您可能需要检查您的设置。 FULL 或 Simple(不缩小日志)。

      强制收缩数据库设置为简单的日志是:

      Alter database <databasename>set Recovery simple   /* if database is set to FULL */
      USE <databasename>
      DBCC SHRINKFILE (<log_name>, 0, TRUNCATEONLY)
      GO
      Alter database <databasename> set Recovery full  /* if database is set to FULL */
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-17
        • 2012-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多