Rumah >pangkalan data >tutorial mysql >mssql 日志清除 sql语句

mssql 日志清除 sql语句

WBOY
WBOYasal
2016-06-07 17:47:46925semak imbas

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

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn