注册 登录
编程论坛 SQL Server论坛

SQL2005 日志文件 太大 怎么导致的?

ylof1986 发布于 2011-08-23 08:06, 857 次点击
能不能选择日志文件可选择的记录什么日志啊,太大了额啊运行不到一天都300M啦啊
4 回复
#2
zhcosin2011-08-23 20:21
建立数据库的时候你设定的日志文件大小初值是不是就太大了?
#3
一氧化碳2011-08-24 16:18
sql2005每进行一次数据库操作都会产生一条日志记录,由于数据访问量大造成日志增长过快。
再设置数据库的“故障还原”为“简单”,可能会缓解问题。
#4
scilent2011-08-26 09:35
这是我看别人的,你试试
按下面的代码,就可以将日志文件缩小到自己想要的大小了。把代码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
#5
autobot2011-11-24 21:45
日志文件太大就是频繁操作造成的,可能你的mdf文件没有多大就是log文件大,数据没多少老动它,就是这样。
如果你要不恢复或是回滚操作不多,在代理里做一个自动处理的SQL语句,定时收缩一下日志文件。
1