* 探索者* 发表于 2011-3-21 15:21

清除SQL SERVER日志的过程

本帖最后由 * 探索者* 于 2011-3-21 15:23 编辑

有时候,sqlserver的日志文件会膨胀得十分巨大
仅仅用企业管理器的收缩数据库方法,无法让其变小

这时候,下面的语句,就可以解决这个问题



Use master go
declare @dbname varchar(50)
declare temp_cur cursor scroll for select name from sysdatabases
open temp_cur fetch first from temp_cur into @dbname
while @@fetch_status =0

begin exec ('backup log ['+@dbname+'] with no_log')
exec ('dbcc shrinkdatabase(['+@dbname+'])')
exec ('dbcc checkcatalog (['+@dbname+'])')
exec ('dump transaction ['+@dbname+'] with no_log')
fetch next from temp_cur into @dbname
end
close temp_cur
deallocate temp_cur   


将上述语句复制到查询分析器中执行,片刻之后,所有数据库的日志文件都被缩小到只有1M

gohomeman1 发表于 2011-3-21 18:06

兄弟是SQL专家?我当年学这个的时候,老师教得实在差,幸亏SQL语言比较口语化,比较好理解。

gohomeman1 发表于 2011-3-21 18:08

话说这个本质是删除以前的日志文件吧。

niegengsheng 发表于 2011-3-21 18:24

本周六考数据库工程师的飘过。

* 探索者* 发表于 2011-3-21 18:37

哈哈,其实刚刚是没想到地方存,就发这里存一下

melancholy 发表于 2011-3-21 18:42

页: [1]
查看完整版本: 清除SQL SERVER日志的过程