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

2021-04-17 12:54:40 字數 2229 閱讀 6424

前幾天也碰到日誌檔案過大的問題,資料庫實際大小為600m, 日誌檔案實際大小為33m, 但日誌檔案占用空間為2.8g!

試了多種方式,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

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

也談如何實現bind apply call

本文先給出如下類定義和例項定義。person類,每個人有姓名,有列印姓名的方法 function person name 兩個例項 let alex new person alex let bob new person bob 不妨先回顧一下bind的使用方法 let saybobname alex...

縮小SQL SERVER日誌檔案

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

縮小SQL SERVER日誌檔案

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