今天客户的服务器D盘剩余可用空间只有900KB了,给他们检查过程中,发现SQLSERVER2005的日志文件有100多G,原因找到了,接下来就要解决问题了
解决方法一:
backup log xydb with no_log
backup log xydb with truncate_only
dbcc shrink database(xydb)
解决方法二:
1. 清空日志
dump transaction xydb with no_log
2. 收缩日志
企业管理器--右键点击你要收缩的数据库--所有任务--收缩文件--选择日志文件--在收缩方式里选择收缩至**M,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了(建议在200~300M,以防止需要恢复使用)
3. 删除LOG
(1) 分离数据库企业管理器->服务器->数据库->右键->分离数据库(有连接情况下勾选“断开所有连接”)
(2) 删除LOG文件
4. 将数据文件xydb.mdf备份至其他盘(如E盘),而后删除
5. 新建数据库(数据库名、数据文件名、日志文件名、以及数据文件和日志文件存放路径和以前的要保持一致)xydb -----数据文件和日志文件目录为D:\xydb
6. 用 alter database xydb set offline 命令使 xydb脱机
7. 将备份至E盘的xydb.mdf文件粘贴到D:\xydb,让其覆盖刚刚新建的数据文件
8. 将 服务管理器(绿色三角箭头)重启 --sqlserver confignation manager
9. 用 alter database xydb set online 命令使xydb联机
10. 将 服务管理器 (绿色三角箭头)重启
11. 用命令 alter database xydb set emergency --使xydb处于紧急模式
12. 将 服务管理器(绿色三角箭头)重启
13. 执行 SP_DBOPTION 'xydb', 'SINGLE USER', 'TRUE' --使数据库处于单用户模式
14. 执行 DBCC CHECKDB('xydb',REPAIR_ALLOW_DATA_LOSS) --有损修复,可能会丢失数据,请慎用
15. 执行 DBCC CHECKDB('xydb',REPAIR_REBUILD) --无损修复
16.执行 SP_DBOPTION 'xydb','SINGLE USER','FALSE' --使数据库处于multiple用户模式下
17. 如果想以后不让日志文件一直增长:
企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)
18. 设置为自动收缩
xydb-》属性->选项-》自动收缩:true