您的位置: 旅游网 > 生活

灵界帝尊 第五百八十五章:八间密室

发布时间:2019-12-04 22:13:30

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

北京瑞京医院王雪
上海市普陀区中心医院怎么样
大连治疗龟头炎医院
贵州哪里治小儿癫痫
沈阳癫痫病重点医院哪家好
猜你会喜欢的
猜你会喜欢的