SQL Server数据库事务占用占用空间过大,导致磁盘分区满的解决方法

现象

事务日志占用过大,已经把磁盘分区占用满了;此时已无法收缩事务日志,提示事务日志已满

解决方法

方法一:收缩事务日志

1. 在“数据库属性-文件”中添加事务日志文件,事务日志文件存放于其他分区,先通过此方式解决事务日志已满的问题

2. 进行事务日志收缩

方法二:删除事务日志文件

操作存在风险,做好快照或备份

1. 在“数据库属性-文件”中添加事务日志文件,事务日志文件存放于其他分区,先通过此方式解决事务日志已满的问题

2. 将数据库进行分离,分离后删除ldf后缀的日志文件

3. 将数据库的mdf文件移动到其他位置,创建新数据库,数据库名与原来的相同

4. 停止SQLServer服务,将原来的mdf数据库文件,覆盖新建数据库的mdf文件

5. 新建查询,检查和修复数据库

alter database <DBNAME> set emergency -- 设置数据库为紧急模式

alter database <DBNAME> set single_user -- 设置数据库为单用户模式

dbcc checkdb(<DBNAME>, repair_allow_data_loss) -- 关键语句,会尝试修复所有报告的错误。这一步操作会重新建立ldf日志文件

alter database <DBNAME> set multi_user -- 设置数据库为多用户模式

alter database <DBNAME> set online -- 设置数据库为联机模式

如果dbcc checkdb执行有报错,可以多执行几次,直到没有报错

来源:https://www.cnblogs.com/xmhelp/p/15160391.html