每次看到暴涨的数据库日志就有些头大,如何进行清空呢?这里以一台数据库SQL SERVER 2005为例,日志文件达到了100多个G一直无法清理,想了很多的办法:
比如下面这款SqlServer日志清除专家,可用于SQL Server 7、SQL Server 2000、SQL Server 2005的各种版本的数据库日志的清除。
这个工具一清就可以清干净的。使您再也不用担心数据库日志文件超过几百兆或上GB级而烦恼。
第二个方法就是采用了一个比较死的办法。采用 分离,然后再删除日志文件再附加来生成一个新的日志文件。
切记在操作前先把SQL好好的备份一下。
第一步 当然还是打开企业管理器了

在分离前最好是先把IIS之类的正在连接数据库的程序关一下,要不然老半天也分离不了。

也可以选择一下 删除链接 这样可能分离会快一点。
我们再定位到数据库所在的硬盘位置

我们为了保除起见可以把 qq2.mdf备份一份,然后再将 qq2_log.ldf 这个文件重命一下名(200G的文件实在是没地方可以备份)。
然后我们再来附加数据库


附加到刚刚那个 mdf的文件。注意看下面会提示 .ldf 文件找不到。

不管他了。选择 .ldf这一分把他给删掉。
然后再确定,哈还原成功了。系统自动生成了一个新的 ldf 文件
建议大家先用上面的那个工具去清一下,如果清不到再用这个死办法来删除日志。
最后再次提醒各位一定要注意备份噢!!
==================================
第三个方法收缩备份后收缩日期
1.将数据库设置成 简单 模式
选择要收缩的数据库,点右键 属性->选项,选择 简单模式

2.选择任务->收缩->文件

3.选择日志

或者用如下语句
(SQL2005)
Backup
go
dump
go
USE
DBCC
Go
--------------------------------------------------------------
(SQL2008):
在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
USE
优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内
即可完成。
缺点:
此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。
SQL Server 2008事务日志清理
http://www.cnblogs.com/dudu/archive/2011/11/26/sql_server_truncate_transaction_log.html
http://bbs.csdn.net/topics/320264886
---------------------======================
SQL
有数据库 xxdb 在 SQL Server 2008 下,日志文件已经超过1G。
以往使用BACKUP语句-BACKUP LOG xxdb WITH NO_LOG 已经失效,在查阅 MSDN 之后发现 MS 提供的标准截断日志语句已经变为了 “BACKUP LOG 语句不指定 WITH COPY_ONLY”
使用语句 BACKUP LOG xxdb to disk='x:work1.bak'
然后使用 DBCC SHRINKFILE (xxdb_log,10)
总结:
完整的收缩日志文件的 T-SQL 语句:
BACKUP LOG xxdb to disk='x:work1.bak'
DBCC SHRINKFILE (xxdb_log,10)
GO
--
BACKUP LOG to disk=<'backupfilename'>
DBCC SHRINKFILE (,10)
GO
里面的x:work是随意设置的。当然也可以收缩到比如5M或1M。
--------------=============================
