缩小SQLSERVER日志文件

来源:互联网 发布:查看linux 文本编码 编辑:程序博客网 时间:2024/05/01 14:24
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
SQLSERVER2000会有日志文件由于时间的积累越来越大的问题:实际大小为15M,日志文件实际大小为625KB(导出的日志文件),但日志文件实际占用空间为200MB(默认设置是文件日志会自动增长)。
如果想在数据库属性那里,直接将当前的日志文件的存储空间改小,是不行的。 解决方法:
找到下面的代码,可以将日志文件缩小到自己想要的大小了。把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可!

SETNOCOUNTON
DECLARE@LogicalFileNamesysname,
@MaxMinutesINT,
@NewSizeINT

USEGFCMS--要操作的数据库名
SELECT@LogicalFileName='GFCMS_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'

EXEC(@TruncLog)--把log中能够shrink的transaction的log标记为可以清除
DBCCSHRINKFILE(@LogicalFileName,@NewSize)--shrink文件

--Wrapthelogifnecessary.
WHILE@MaxMinutes>DATEDIFF(mi,@StartTime,GETDATE())--timehasnotexpired
AND@OriginalSize=(SELECTsizeFROMsysfilesWHEREname=@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

详细解释:关键的语句是:'BACKUPLOG'+db_name()+'WITHTRUNCATE_ONLY'和DBCCSHRINKFILE(@LogicalFileName,@NewSize) 'BACKUPLOG'+db_name()+'WITHTRUNCATE_ONLY':在不备份日志的情况下,删除不活动的日志部分,并且截断日志。但是,截断不减小物理日志文件的大小,但减小逻辑日志文件的大小。 DBCCSHRINKFILE
收缩相关数据库的指定数据文件或日志文件大小,即减小物理日志文件的大小。语法
DBCCSHRINKFILE
   ({file_name|file_id}
       {[,target_size]
           |[,{EMPTYFILE|NOTRUNCATE|TRUNCATEONLY}]
       }
   ) 详细的描述可以参考mk:@MSITStore:C:/Program%20Files/Microsoft%20SQL%20Server/80/Tools/Books/tsqlref.chm::/ts_dbcc_8b51.htm mk:@MSITStore:C:/Program%20Files/Microsoft%20SQL%20Server/80/Tools/Books/architec.chm::/8_ar_da2_7vaf.htm   
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 机票无托运行李怎么办 飞机票不含托运怎么办 登机重量超了怎么办 随身行李超重了怎么办 国际航班没带护照怎么办 派出所不开户籍怎么办 做火车没身份证怎么办 2018年怎么办户籍证明 一岁宝宝护照怎么办 户籍证明开不了怎么办 信用卡提不了额怎么办 信用卡提额诈骗怎么办 信用卡提额失败怎么办 身份证证件号错误怎么办 东西落在飞机上怎么办 乘高铁忘记带身份证怎么办 身份证丢坐火车怎么办 苏州市民a卡怎么办 集体户口户口页怎么办 网上不能买火车票怎么办 集体户口离婚时怎么办 没户口本怎么办结婚证 酒店没带身份证怎么办 住酒店拍身份证怎么办 手机取火车票要怎么办 香港酒店没登记怎么办 住宿未带身份证怎么办 长期住酒店怎么办暂住证 港澳通行过期了怎么办 异地社保卡怎么办出来 住酒店换洗衣服怎么办 住酒店车被划了怎么办 住酒店身份证丢失怎么办 没有社保卡医院怎么办 宾馆未带身份证怎么办 医保住院未登记怎么办 住酒店房卡丢了怎么办 社保卡读取不了怎么办 新社保卡没磁了怎么办 办社保新卡怎么办? 毕业登记表写错怎么办