教你如何縮小SQL Server資料庫日誌檔案

2021-04-13 22:13:10 字數 2221 閱讀 9170

問題:資料庫實際大小為600mb, 日誌檔案實際大小為33mb, 但日誌檔案占用空間為2.8gb!試了多種方式,shirnk database, truncate log file, 都沒辦法將檔案縮小。無論如何,這應該算sql server的乙個bug吧。

解決方法

後來找到下面的**,就可以將日誌檔案縮小到自己想要的大小了。把**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

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

也談如何縮小SQL SERVER日誌檔案

前幾天也碰到日誌檔案過大的問題,資料庫實際大小為600m,日誌檔案實際大小為33m,但日誌檔案占用空間為2.8g 試了多種方式,shirnk database,truncate log file,都沒辦法將檔案縮小。無論如何,這應該算sql server的乙個bug吧。後來找到下面的 就可以將日誌檔...

縮小SQL SERVER日誌檔案

sql server 2000 會有日誌檔案由於時間的積累越來越大的問題 資料庫實際大小為15m,日誌檔案實際大小為625kb 匯出的日誌檔案 但日誌檔案實際占用空間為200mb 預設設定是檔案日誌會自動增長 如果想在資料庫屬性那裡,直接將當前的日誌檔案的儲存空間改小,是不行的。解決方法 找到下面的...

縮小SQL SERVER日誌檔案

sql server 2000 會有日誌檔案由於時間的積累越來越大的問題 資料庫實際大小為15m,日誌檔案實際大小為625kb 匯出的日誌檔案 但日誌檔案實際占用空間為200mb 預設設定是檔案日誌會自動增長 如果想在資料庫屬性那裡,直接將當前的日誌檔案的儲存空間改小,是不行的。解決方法 找到下面的...