>데이터 베이스 >MySQL 튜토리얼 >mssql 日志清除 sql语句

mssql 日志清除 sql语句

WBOY
WBOY원래의
2016-06-07 17:47:46924검색

mssql 日志清除 sql语句

日志清除

set nocount on
declare @logicalfilename sysname,
 @maxminutes int,
 @newsize int

use tablename -- 要操作的名
select  @logicalfilename = 'tablename_log', -- 日志文件名
@maxminutes = 10, -- limit on time allowed to wrap log.
 @newsize = 1  -- 你想设定的日志文件的大小(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  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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.