数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作。可以通过直接删除log文件和清空日志在清除数据库日志。
一、手动清除
1、分离数据库。分离数据库之前一定要做好数据库的全备份,选择数据库——右键——任务——分离。然后勾选删除连接,分离后在数据库列表将看不到已分离的数据库。
2、手动删除LOG文件
3、附加数据库,附加的时候会提醒找不到log文件。
4、附加数据库之后将生成新的日志文件log,新的日志文件的大小事也就几百K。
当然,也可以通过如下命令来完成以上的操作:
use master; exec sp_detach_db @dbname='TestDB'; exec sp_attach_single_file_db @dbname='TestDB',@physname='D:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\TestDB.mdf'
二、清空日志:建议将其做成定时作业,而不用每次都人工干预
在SQL Server 2005和2000支持,SQL Server 2008不支持该命令:
--清空日志 DUMP TRANSACTION TestDB WITH NO_LOG --收缩数据库文件 DBCC SHRINKFILE ('TestDB_log',1) --截断事务日志 BACKUP LOG TestDB WITH NO_LOG
要在2008及以后版本支持如下命令:
USE [master] GO ALTER DATABASE [databasename] SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE [databasename] SET RECOVERY SIMPLE GO USE [databasename] GO DBCC SHRINKFILE (N'databasename_log',10,TRUNCATEONLY) GO USE [master] GO ALTER DATABASE [databasename] SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE [databasename] SET RECOVERY FULL GO
后话总结:
1、数据库的数据文件和事物日志文件不要按百分比自动扩充,而应该是按MB增长。比如每次增长100MB~200MB;
2、要定期的清理数据库的事物日志文件;
3、一旦出现和数据库相关的问题,应该第一时间去查看数据库的运行日志。