資料庫日誌清理指令碼

2021-04-15 12:35:53 字數 2152 閱讀 5704

/*********資料庫壓縮方法*********/

/*******************************/

declare @db nvarchar(20)

-- 資料庫名稱

set @db = 'dbname'

-- 清空日誌

dump transaction @db with no_log

-- 截斷事務日誌

backup log @db with no_log

-- 收縮資料庫

dbcc shrinkdatabase (@db)

/*******************************/

----ms sql server 日誌清理

declare @logicalfilename sysname,@maxminutes int,@newsize int

use grades -- 要操作的資料庫名

select @logicalfilename = 'grades_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 < @originalsize / 16) and (@counter < 50000))

begin -- update

insert dummytrans values ('fill log')

delete dummytrans

select @counter = @counter + 1

endexec (@trunclog)

endselect '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 

Deepgreen資料庫日誌清理指令碼

資料庫時間久了,難免會產生很多日誌,deepgreen的日誌與greenplum一樣,都存在pg log資料夾下,我們可以使用以下指令碼,配合linux定時任務,儲存固定日期的日誌即可 bin bash filename gp clear.sh start time start time date ...

SqlServer清理資料庫日誌

在sqlserver資料庫資料量提公升和大量的運算元據庫,不免產生很多的資料庫日誌,可以通過sqlserver自帶的作業進行定期的資料庫日誌清理,如下 清空所有資料庫日誌 declare exec sql nvarchar 1200 sql nvarchar 1200 full sql nvarch...

sql server 資料庫日誌清理

sql server 資料庫日誌清理 use master goalter database 資料庫名 set recovery with no wait goalter database 資料庫名 set recovery gouse 資料庫名 godbcc shrinkfile n 資料庫日誌檔...