缩小sql server数据库日志文件,限制sql server数据库日志文件的大小

由于经常和数据库打交道,经常见到在客户的机器上,SQL server数据库日志文件的大小,远远超过于数据库数据文件的大小,客户用的都是一些服务器,磁盘空间有的是,当然不在乎这点文件,可以,当客户要求查找一些数据的时候,就不得不备份客户的数据库,经常是备份回来的数据库,无法还原,原因就是我的PC上没有这么大的空间来还原,无奈啊,

只有把客户的数据库日志缩小一下了,于是从网上找了以下代码,可以收缩数据库日志,我执行了一下,日志缩小的,不过有一个错误产生,还没来的急分析,先不管他,达到目的才是硬道理

 


SET  NOCOUNT  ON
DECLARE   @LogicalFileName  sysname,
@MaxMinutes   INT ,
@NewSize   INT


USE  bbbbb  --  要操作的数据库名
SELECT   @LogicalFileName   =   'bbbbb _Log ' --  日志文件名
@MaxMinutes   =   100 --  数据库操作的超时上限.
@NewSize   =   100   --  你想设定的日志文件的大小(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 ())  --  当操作未超时
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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值