删除sql server大容量日志的方法(四)

日期: 2008-07-27 作者:guosonger 来源:TechTarget中国 英文

  –1.清空日志






&#101xec(’DUMP TRANSACTION [’+@dbname+’] WITH NO_LOG’) 

  –2.截断事务日志:







&#101xec(’BACKUP LOG [’+@dbname+’] WITH NO_LOG’) 

  –3.收缩数据库文件(如果不压缩,数据库的文件不会减小







&#101xec(’DBCC SHRINKDATABASE([’+@dbname+’])’) 

  –4.设置自动收缩







&#101xec(’&#101xec sp_dboption ’’+@dbname+’’,’autoshrink’,’TRUE’’) 

  –后面的步骤有一定危险,你可以可以选择是否应该这些步骤


  –5.分离数据库







if @bkdatabase=1 
  begin 
  if isnull(@bkfname,’)=’ 
  set @bkfname=@dbname+’_’+convert(varchar,getdate(),112) 
  +replace(convert(varchar,getdate(),108),’:’,’) 
  select 提示信息=’备份数据库到SQL 默认备份目录,备份文件名:’+@bkfname 
  &#101xec(’backup database [’+@dbname+’] to disk=’’+@bkfname+’’) 
  end 

  –进行分离处理







create table #t(fname nvarchar(260),type int) 
  &#101xec(’insert into #t select filename,type=status&0x40 from [’+@dbname+’]..sysfiles’) 
  &#101xec(’sp_detach_db ’’+@dbname+’’) 
  –删除日志文件 
  declare @fname nvarchar(260),@s varchar(8000) 
  declare tb cursor local for select fname from #t where type=64 
  open tb 
  fetch next from tb into @fname 
  while @@fetch_status=0 
  begin 
  set @s=’del “’+rtrim(@fname)+’”’ 
  &#101xec master..xp_cmdshell @s,no_output 
  fetch next from tb into @fname 
  end 
  close tb 
  deallocate tb 

  –附加数据库






set @s=’ 
  declare tb cursor local for select fname from #t where type=0 
  open tb 
  fetch next from tb into @fname 
  while @@fetch_status=0 
  begin 
  set @s=@s+’,’’+rtrim(@fname)+’’ 
  fetch next from tb into @fname 
  end 
  close tb 
  deallocate tb 
  &#101xec(’sp_attach_single_file_db ’’+@dbname+’’+@s) 
  go 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐