首页 - 信息 - SQL Server 2000/2005/2008中删除或压缩数据库日志的方法

SQL Server 2000/2005/2008中删除或压缩数据库日志的方法

2023-10-02 08:26

最近win2008 r2服务器比较卡。打开服务器显示也很慢。 sqlserver业务费执行正常,服务器桌面运行也比较卡顿。经过多方研究,发现原来的原因是sqlserver日志文件达到了84G。下面我将解决方法分享给大家。有需要的朋友可以参考一下

由于数据库日志增长设置为“无限制”,随着时间的推移,日志文件将不可避免地变得非常大。一个400G的数据库实际上有600G的LOG文件,严重占用磁盘空间。由于主要用途是OLAP,数据库本身不会有大的改变,所以日志不会有太大用处,所以想办法把数据库日志文件缩小到很小或者删除。

在网上搜索相关解决方案后,得到了各种各样的答案,但真正管用的解决方案并不多。这是在csdn上找到的方法。这个方法描述了SQL Server 2005和SQL Server 2008在收缩数据库日志方面的区别,很有帮助。同时,这种方法效率非常高,只需不到30秒就可以将600G的日志收缩到10M。

在最后附上代码:

SQL Server 2000 的方法

转储事务 [zy66] 无日志
备份日志 [zy66] 带 NO_LOG
DBCC 收缩数据库([zy66])

其中 jb51 是数据库名称

SQL Server 2005 的方法

备份日志 [jb51] 带 no_log
去
转储事务 [jb51] 带 no_log
去
使用zy66
DBCC 收缩文件 (2)
GO

注意:由于SQL Server 2008对文件和日志管理进行了优化,因此上述语句在SQL2005中可以运行,但在SQL2008中已被取消。

使用[主]
去
ALTER DATABASE jb51 设置恢复简单且无需等待
去ALTER DATABASE jb51 SET RECOVERY SIMPLE --简单模式
去
使用zy66
去
DBCC SHRINKFILE (N'DNName_Log', 11, TRUNCATEONLY)
 
去
 
使用[主]
去
更改数据库 zy66 设置恢复完全且不带 NO_WAIT
去
ALTER DATABASE zy66 SET RECOVERY FULL --恢复到完整模式
GO

其中item66为数据库名称,DNName_Log为日志名称。你需要找到它。本文就介绍到这里,有需要的朋友可以参考一下。