SQL Server 2008数据库清除日志的问题


SQL2008 的收缩日志   
由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:  
(SQL2005)  

  1. Backup Log DNName with no_log   
  2. go   
  3. dump transaction DNName with no_log   
  4. go   
  5. USE DNName    
  6. DBCC SHRINKFILE (2)   
  7. Go   

(SQL2008):  
在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。  

  1. USE [master]   
  2.     GO   
  3.     ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT   
  4.     GO   
  5.     ALTER DATABASE DNName SET RECOVERY SIMPLE   --简单模式   
  6.     GO   
  7.     USE DNName    
  8.     GO   
  9.     DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)   
  10.     GO   
  11.     USE [master]   
  12.     GO   
  13.   
  14.     ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT   
  15.   
  16.     GO   
  17.   
  18.     ALTER DATABASE DNName SET RECOVERY FULL  --还原为完全模式   
  19.   
  20.     GO  

优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内即可完成。

缺点: 不过此动作最好不要经常使用,因为它的运行会带来系统碎片。普通状态下LOG和DIFF的备份即可截断日志。

此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。

相关内容