MsSql截斷收縮日誌

2021-05-17 18:17:33 字數 1895 閱讀 6101

--backup log cas with truncate_only;--截斷日誌等同於dump tran 《資料庫》 with truncate_only

set nocount on

declare @logicalfilename sysname,

@maxminutes int,

@newsize int

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

select @logicalfilename='tempdb_log', -- 日誌檔名

@maxminutes=10, -- 時間允許限制包裹日誌.

@newsize=100 -- 你想設定的日誌檔案的大小(m)會自動加上初始值1

-- setup / initialize

declare @originalsize int

select @originalsize = size

from sysfiles

where name = @logicalfilename

select db_name() + ' 的原日誌大小為 ' +

convert(varchar(30),@originalsize) + ' 8k pages or ' +

convert(varchar(30),(@originalsize*8/1024)) + 'mb'

from sysfiles

where name = @logicalfilename

declare @counter int,

@starttime datetime,

@trunclog varchar(255)

select @starttime = getdate(),

@trunclog = 'backup log ' + db_name() + ' with truncate_only'

exec (@trunclog)--截斷日誌

dbcc shrinkfile (@logicalfilename, @newsize)--收縮日誌

create table dummytrans

(dummycolumn char (8000) not null)

-- 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 db_name() + ' 的最終日誌大小為 ' +

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

ms sql收縮日誌

set nocount on declare logicalfilename sysname,maxminutes int,newsize int use tolldb ic 要操作的資料庫名 select logicalfilename tolldb ic log 日誌檔名 maxminutes ...

快速收縮MSSQL資料庫日誌

快速收縮資料庫只有下面三個步驟 特別注意 請按步驟進行,未進行前面的步驟,請不要做後面的步驟 否則可能損壞你的資料庫.一 開啟查詢分析器,預設資料庫選擇master,然後進行下列操作 1.清空日誌 dump transaction 資料庫名 with no log 2.截斷事務日誌 backup l...

MSSQL 2005中截斷事務日誌的補充

近日在sql2005上作事務日誌截斷時,發現日誌檔案物理大小並未減小.遂而檢視了sql 2005的聯機文件.開始就看到了下面這段 在 sql server 的最早版本中,截斷日誌意味著將進行資料庫恢復或還原不再需要的日誌記錄物理刪除。但是,在近來的版本中,截斷過程只是做標記,以便重新使用舊日誌記錄使...