【www.gdgbn.com--班主任工作日志】

如何缩小sql server日志文件
可以将日志文件缩小到自己想要的大小了。把代码copy到查询分析器里,,然后修改其中的3个参数(数据库教程名,日志文件名,和目标日志文件的大小),运行即可(我已经用过多次了)

  -----

 

 set nocount on

  declare @logicalfilename sysname,

  @maxminutes int,

  @newsize int

  use marias -- 要操作的数据库

  select @logicalfilename = "marias_log", -- 日志文件名

  @maxminutes = 10, -- limit on time allowed to wrap log.

  @newsize = 100 -- 你想设定的日志文件的大小(m)

  -- setup / initialize

  declare @originalsize int

  select @originalsize = size

  from sysfiles

  where name = @logicalfilename

  select "original size of " + db_name() + " log is " +

  convert(varchar(30),@originalsize) + " 8k pages or " +

  convert(varchar(30),(@originalsize*8/1024)) + "mb"

  from sysfiles

  where name = @logicalfilename

  create table dummytrans

  (dummycolumn char (8000) not null)

  declare @counter int,

  @starttime datetime,

  @trunclog varchar(255)

  

 

select @starttime = getdate(),

  @trunclog = "backup log " + db_name() + " with truncate_only"

  dbcc shrinkfile (@logicalfilename, @newsize)

  exec (@trunclog)

  -- wrap the log if necessary.

  while @maxminutes > datediff (mi, @starttime, getdate()) -- time has not expired

  and @originalsize = (select size from sysfiles where name = @logicalfilename)

  and (@originalsize * 8 /1024) > @newsize

  begin -- outer loop.

  select @counter = 0

  while ((@counter <@originalsize / 16) and (@counter <50000))

  begin -- update

  insert dummytrans values ("fill log")

  delete dummytrans

  select @counter = @counter + 1

  end

  exec (@trunclog)

  end

  select "final size of " + db_name() + " log is " +

  convert(varchar(30),size) + " 8k pages or " +

  convert(varchar(30),(size*8/1024)) + "mb"

  from sysfiles

  where name = @logicalfilename

  drop table dummytrans

  set nocount off

本文来源:http://www.gdgbn.com/banzhurengongzuo/27339/