sql server 2000 會有日誌檔案由於時間的積累越來越大的問題:資料庫實際大小為15m, 日誌檔案實際大小為625kb(匯出的日誌檔案), 但日誌檔案實際占用空間為200mb(預設設定是檔案日誌會自動增長)。
如果想在資料庫屬性那裡,直接將當前的日誌檔案的儲存空間改小,是不行的。
解決方法:
找到下面的**,可以將日誌檔案縮小到自己想要的大小了。把**copy到查詢分析器裡,,然後修改其中的3個引數(資料庫名,日誌檔名,和目標日誌檔案的大小),執行即可!
set nocount on
declare @logicalfilename sysname,
@maxminutes int,
@newsize int
use gfcms -- 要操作的資料庫名
select @logicalfilename = 'gfcms_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'
exec (@trunclog)--把log中能夠shrink的transaction的log標記為可以清除
dbcc shrinkfile (@logicalfilename, @newsize)
--shrink檔案
-- 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
詳細解釋:
關鍵的語句是:
'backup log ' + db_name() + ' with truncate_only'和
dbcc shrinkfile (@logicalfilename, @newsize)
'backup log ' + db_name() + ' with truncate_only':
在不備份日誌的情況下,刪除不活動的日誌部分,並且截斷日誌。但是,截斷不減小物理日誌檔案的大小,但減小邏輯日誌檔案的大小。
dbcc shrinkfile
收縮相關資料庫的指定資料檔案或日誌檔案大小,即減小物理日誌檔案的大小。
語法dbcc shrinkfile
( ] })
詳細的描述可以參考
mk:@msitstore:c:/program%20files/microsoft%20sql%20server/80/tools/books/tsqlref.chm::/ts_dbcc_8b51.htm
mk:@msitstore:c:/program%20files/microsoft%20sql%20server/80/tools/books/architec.chm::/8_ar_da2_7vaf.htm
縮小SQL SERVER日誌檔案
sql server 2000 會有日誌檔案由於時間的積累越來越大的問題 資料庫實際大小為15m,日誌檔案實際大小為625kb 匯出的日誌檔案 但日誌檔案實際占用空間為200mb 預設設定是檔案日誌會自動增長 如果想在資料庫屬性那裡,直接將當前的日誌檔案的儲存空間改小,是不行的。解決方法 找到下面的...
縮小SQL SERVER日誌檔案
sql server 2000 會有日誌檔案由於時間的積累越來越大的問題 資料庫實際大小為15m,日誌檔案實際大小為625kb 匯出的日誌檔案 但日誌檔案實際占用空間為200mb 預設設定是檔案日誌會自動增長 如果想在資料庫屬性那裡,直接將當前的日誌檔案的儲存空間改小,是不行的。解決方法 找到下面的...
縮小SQL SERVER日誌檔案
sql server 2000 會有日誌檔案由於時間的積累越來越大的問題 資料庫實際大小為15m,日誌檔案實際大小為625kb 匯出的日誌檔案 但日誌檔案實際占用空間為200mb 預設設定是檔案日誌會自動增長 如果想在資料庫屬性那裡,直接將當前的日誌檔案的儲存空間改小,是不行的。解決方法 找到下面的...