在使用過程中大家經常碰到資料庫日誌非常大的情況,在這裡介紹了兩種處理方法……
方法一一般情況下,sql資料庫的收縮並不能很大程度上減小資料庫大小,其主要作用是收縮日誌大小,應當定期進行此操作以免資料庫日誌過大
1、設定資料庫模式為簡單模式:開啟sql企業管理器,在控制台根目錄中依次點開microsoft sql server-->sql server組-->雙擊開啟你的伺服器-->雙擊開啟資料庫目錄-->選擇你的資料庫名稱(如論壇資料庫forum)-->然後點選右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇「簡單」,然後按確定儲存
2、在當前資料庫上點右鍵,看所有任務中的收縮資料庫,一般裡面的預設設定不用調整,直接點確定
3、收縮資料庫完成後,建議將您的資料庫屬性重新設定為標準模式,操作方法同第一點,因為日誌在一些異常情況下往往是恢復資料庫的重要依據
方法二set nocount on
declare @logicalfilename sysname,
@maxminutes int,
@newsize int
use tablename -- 要操作的資料庫名
select @logicalfilename = 』tablename_log』, -- 日誌檔名
@maxminutes = 10, -- limit on time allowed to wrap log.
@newsize = 1 -- 你想設定的日誌檔案的大小(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
SQL SERVER 清除日誌
1.在sql2008中清除日誌就必須在簡單模式下進行,等清除動作完畢再調回到完全模式。2.這裡的dbname log 可以通過以下查詢 use dbname goselect file id,name from sys.database files use master goalter databa...
sqlserver清除日誌 驗證
1.dump transaction database name with no log 收縮資料庫是還真是必須的加上 2.backup log database name with no log 3.收縮資料庫檔案 如果不壓縮,資料庫的檔案不會減小 企業管理器 右鍵你要壓縮的資料庫 所有任務 收縮...
SQL Server清除日誌語句
sql1 清除日誌 2 declare logicalfilename sysname,3 maxminutes int,4 newsize int 5 use database 要操作的資料庫名 6 select logicalfilename database log 日誌檔名 7 maxmin...