您的位置: 双辽信息网 > 游戏

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

发布时间:2019-09-13 19:49:56

本文将向大家讲解一下怎样缩小 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

孩子营养不良怎么办
怎样治疗脑梗塞呢
剖宫产术后怎么防止腹胀便秘
丁桂薏芽健脾吃多久
猜你会喜欢的
猜你会喜欢的