标题:SQL2005 日志文件 太大 怎么导致的?
只看楼主
ylof1986
Rank: 2
等 级:论坛游民
帖 子:241
专家分:61
注 册:2008-1-6
结帖率:93.94%
已结贴  问题点数:20 回复次数:4 
SQL2005 日志文件 太大 怎么导致的?
能不能选择日志文件可选择的记录什么日志啊,太大了额啊运行不到一天都300M啦啊
搜索更多相关主题的帖子: 天都 日志 记录 
2011-08-23 08:06
zhcosin
Rank: 2
等 级:论坛游民
帖 子:29
专家分:77
注 册:2011-8-18
得分:3 
建立数据库的时候你设定的日志文件大小初值是不是就太大了?
2011-08-23 20:21
一氧化碳
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:132
专家分:335
注 册:2007-8-13
得分:14 
sql2005每进行一次数据库操作都会产生一条日志记录,由于数据访问量大造成日志增长过快。
再设置数据库的“故障还原”为“简单”,可能会缓解问题。

2011-08-24 16:18
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
得分:3 
这是我看别人的,你试试
按下面的代码,就可以将日志文件缩小到自己想要的大小了。把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可 ----- SET NOCOUNT ON DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT

USE Marias -- 要操作的数据库名 SELECT @LogicalFileName = 'Marias_log', -- 日志文件名 @MaxMinutes = 10, -- Limit on time allowed to wrap log. @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()) -- 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

在没有路的地方走一条路,让别人有路可走
2011-08-26 09:35
autobot
Rank: 4
等 级:业余侠客
帖 子:71
专家分:202
注 册:2007-9-6
得分:0 
日志文件太大就是频繁操作造成的,可能你的mdf文件没有多大就是log文件大,数据没多少老动它,就是这样。
如果你要不恢复或是回滚操作不多,在代理里做一个自动处理的SQL语句,定时收缩一下日志文件。
2011-11-24 21:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-348186-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.361719 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved