您的位置: 公主岭信息网 > 历史

怎样缩小SQL Server数据库日志文件

发布时间:2019-09-13 19:18:40

本文将向大家讲解一下怎样缩小 SQL Server 的数据库日志文件,比较简单,一看就能明白。

问:我的数据库实际大小为600MB, 日志文件实际大小为33MB, 但日志文件占用空间为2.8GB!我曾经试了几种方式,SHIRNK DATABASE, TRUNCATE LOG FILE, 都没办法将文件缩小。

答:你可以把下面的代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可。

-----

SETNOCOUNTON

DECLARE@LogicalFileNamesysname,

@MaxMinutesINT,

@NewSizeINT

USEMarias

--要操作的数据库名

SELECT@LogicalFileName="Marias_log"

--日志文件名

@MaxMinutes=10,

--Limitontimeallowedtowraplog.

@NewSize=100

--你想设定的日志文件的大小(M)

--Setup/initialize

DECLARE@OriginalSizeint

SELECT@OriginalSize=size

FROMsysfiles

WHEREname=@LogicalFileName

SELECT"OriginalSizeof"+db_name()+"LOGis"+

CONVERT(VARCHAR(30),@OriginalSize)+"8Kpagesor"+

CONVERT(VARCHAR(30),(@OriginalSize*8/1024))+"MB"

FROMsysfiles

WHEREname=@LogicalFileName

CREATETABLEDummyTrans

(DummyColumnchar(8000)notnull)

DECLARE@CounterINT,

@StartTimeDATETIME,

@TruncLogVARCHAR(255)

SELECT@StartTime=GETDATE(),

@TruncLog="BACKUPLOG"

+db_name()+"WITHTRUNCATE_ONLY"

DBCCSHRINKFILE(@LogicalFileName,@NewSize)

EXEC(@TruncLog)

--Wrapthelogifnecessary.

WHILE@MaxMinutes>DATEDIFF

(mi,@StartTime,GETDATE())--timehasnotexpired

AND@OriginalSize=(SELECTsize

FROMsysfilesWHEREname=@LogicalFileName)

AND(@OriginalSize*8/1024)>@NewSize

BEGIN--Outerloop.

SELECT@Counter=0

WHILE((@Counter<@OriginalSize/16)

AND(@Counter<50000))

BEGIN--update

INSERTDummyTransVALUES("FillLog")

DELETEDummyTrans

SELECT@Counter=@Counter+1

END

EXEC(@TruncLog)

END

SELECT"FinalSizeof"+db_name()+"LOGis"+

CONVERT(VARCHAR(30),size)+"8Kpagesor"+

CONVERT(VARCHAR(30),(size*8/1024))+"MB"

FROMsysfiles

WHEREname=@LogicalFileName

DROPTABLEDummyTrans

SETNOCOUNTOFF

房颤血栓
芪斛楂颗粒
儿童发烧怎么办
小孩咳嗽怎么治
猜你会喜欢的
猜你会喜欢的