jifeng1010 发表于 2008-9-5 15:14:26

原帖由 南瓜 于 2008-7-25 01:00 发表 http://bbs.sunwy.org/images/common/back.gif
按照3楼的大侠提供的方法做了,又照2楼的游侠说的进系统清空了日志,可D盘那文件并没有变小,还是有55G,只是暂时不再长大了,好家伙,什么东西!?乖乖,那我的D盘还能用回来么!?明天在观察一下,非常感谢二位热心 ...
这个问题很好解决的,到网上下载一个SQL 日志压缩工具就可以了!很小很强大的功能,而且还可以限制日志文件大小!

gjbox 发表于 2008-9-28 21:34:11

日志文件 。有很多种方法 我提供一段 代码吧

SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
          @MaxMinutes INT,
          @NewSize INT
USE      tablename            -- 要操作的数据库名
Select   @LogicalFileName = 'tablename_log',   -- 日志文件名
@MaxMinutes = 10,                -- Limit on time allowed to wrap log.
          @NewSize = 1                   -- 你想设定的日志文件的大小(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()) -- time has not expired
      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

以上代码请仔细看看 有帮助的

s888888h 发表于 2008-12-30 16:46:44

我以前还真没发现过这个问题.回去得赶紧检查设置.

转身离开 发表于 2008-12-30 20:31:31

有长见识了。。这情况有碰到 不知道处理
还好没55G这么大

weldearcy 发表于 2009-1-3 20:09:22

来论坛几天,收获不少啊,以前朋友叫我学数据库,我没听,现在.......:L

wwfoxmail 发表于 2009-1-13 15:45:47

感谢大家的回复,方法是不是也适合速达软件吧,先按照方法试试看,熟悉一下sql

享受寂寞 发表于 2009-2-11 18:49:21

果然OK了,阳光就是好,其他地方都找不到这么有用的~~~

pupper 发表于 2009-2-14 08:06:45

a8可以自动备份数据的。定时备份很不错

m1978xz 发表于 2009-3-16 23:14:38

这说明楼主的D盘也是很大啊。我这个笔记本一共才40G的空间。学习了。免得也生成这么大的文件。呵呵。

kyrix 发表于 2009-3-21 01:51:01

原帖由 好人一生平安 于 2008-7-27 17:09 发表 http://bbs.sunwy.org/images/common/back.gif
看到楼主这个问题,本人上传个工具给你吧。专门用来清除数据库日志的。只要你把日志文件不再添加的勾打上,以后永远都不会添大了。
如下图



此方法是正确的,“完全”数据库会产生非常大的数据log
页: 1 [2] 3 4 5 6 7 8 9
查看完整版本: A8居然生成了一个53G的文件大得撑爆硬盘了!!