set nocount on
declare @logicalfilename sysname,
@maxminutes int,
@newsize int
use zhenghe -- 要操作的資料庫名
select @logicalfilename = 'zhenghe_log', -- 日誌檔名
@maxminutes = 10, -- limit on time allowed to wrap log.
@newsize = 15 -- 你想設定的日誌檔案的大小(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
壓縮資料庫日誌檔案 儲存過程
use master goset ansi nulls on goset quoted identifier on go 建立人 高公升 建立日期 2007 05 18 修改日期 2007 06 02 功能目的 收縮資料庫的日誌檔案 引數 要執行收縮的資料庫名稱,如果引數為 則收縮所有的非系統資料庫...
sql server壓縮資料庫和日誌檔案
dbcc shrinkdatabase 功能 壓縮資料庫 用法 dbcc shrinkdatabase tb 115sou com 注意 只有產生許多未使用空間的操作 如截斷表或刪除表操作 後,執行收縮操作最有效,產生碎片較少。其他情況請勿執行,因為雖然釋放了空間,但是會產生大量碎片 例子 我的資料...
壓縮資料庫日誌
經常在csdn上看到發帖說,壓縮日誌檔案處理不當,導致資料庫損壞,甚至不能恢復資料,於是就寫了乙個通用的資料庫日誌檔案壓縮的儲存過程來解決此問題 壓縮資料庫的通用儲存過程 壓縮日誌及資料庫檔案大小 因為要對資料庫進行分離處理 所以儲存過程不能建立在被壓縮的資料庫中 鄒建 2004.03 引用請保留此...