有以下几种方法

  • 备份日志。
    备份日志主要是为了防止由于日志空间满了而发生日志截断,从而影响数据库的恢复。而截断日志是释放空间的一个方法,所以为了避免日志空间满了,要经常备份日志。
  • 释放磁盘空间以便日志可以自动增长。
    手动删除磁盘上的其他不用的文件来释放磁盘空间,数据库会自动扩展日志大小。
  • 将日志文件移到具有足够空间的磁盘上。
  • 增加日志文件的大小。
    很常用的一个方法
  • 在其他磁盘上添加日志文件。
  • 完成或取消长时间运行的事务。
    长时间运行的事务会产生大量日志,导致日志空间不够。
    查询长时间运行的事务:
select * from sys.dm_tran_database_transactions t 
where DATEDIFF(SECOND,t.database_transaction_begin_time,GETDATE()) >60 --运行时间超过60秒
and t.database_transaction_state in(4,12) --事务未提交,但已产生日志

database_transaction_state字段的含义:
1 = 未初始化事务。
3 = 已初始化事务,但未生成任何日志记录。
4 = 事务已生成日志记录。
5 = 事务已准备就绪。
10 = 事务已提交。
11 = 已回滚事务。
12 = 正在提交事务。 (日志记录正在生成,但尚未具体化或持久化。)