如何缩小SQL SERVER日志文件

原创 2004年07月07日 14:03:00

把代码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

Sql server 2005日志文件太大,使其减小的方法

Sql server 2005日志文件太大,使其减小的方法   Sqlserver2005日志文件太大,使其减小的方法:  运行下面的三行 dbName为数据库名:  ...
  • kingmax54212008
  • kingmax54212008
  • 2013年04月12日 16:52
  • 10611

SQL Server日志文件过大 大日志文件清理方法 不分离数据库

SQL Server日志文件过大    大日志文件清理方法 ,网上提供了很多分离数据库——〉删除日志文件-〉附加数据库 的方法,此方法风险太大,过程也比较久,有时候也会出现分离不成功的现象。下面的方式...
  • slimboy123
  • slimboy123
  • 2017年01月16日 17:05
  • 8999

sql server 2008数据库日志太大解决方法

环境: 数据文件.mdf为22G,日志文件.ldf为33G,用常规方法清除日志文件时,报错: USE [master] GO ALTER DATABASE CHIANG_SCM_DB SET REC...
  • hdhai9451
  • hdhai9451
  • 2015年06月13日 15:53
  • 3232

SQL Server中日志的的作用

数据库的可靠性     在关系数据库系统中,我们需要数据库可靠,所谓的可靠就是当遇见如下两种情况之一时保证数据库的一致性: 在系统崩溃/故障等情况下,保证数据库的一致性 数据不能在多个DML语...
  • u012298337
  • u012298337
  • 2013年12月21日 12:42
  • 940

SQL Server 2008 清空删除日志文件 130G日志 10秒内变10M

SQL2005: Backup Log DNName with no_log '这里的DNName是你要收缩的数据库名,自己注意修改下面的数据库名,我就不再注释了。 go dump transact...
  • wozengcong
  • wozengcong
  • 2015年08月07日 20:35
  • 1648

SAP SQLServer数据库的日志文件过大解决办法

服务器是windows server 2008 R2 64位英文版,数据库是SQL server 2008英文版。服务器上安装的是SAP DEV(SAP测试系统)和其数据库,由于同事测试的需要里面co...
  • jaminwm
  • jaminwm
  • 2015年09月14日 22:23
  • 2261

SQL Server中收缩、清空和删除数据库文件及日志文件

一、简单方法  –SQL Server收缩方法  1、右键数据库→属性→选项→故障还原模型→设为简单→确定;  2、右键数据库→所有任务→收缩数据库→确定;  3、右键数据库→属性→选项→故障...
  • dawn4317
  • dawn4317
  • 2017年03月07日 19:52
  • 1214

记一次处理日志文件过大问题的解决过程(SQL Server)

问题描述: SQL2008R2的一个DB, 兼容等级=100, 恢复模式=full, 数据量约30GB. 之前一直正常运行, 最近日志文件暴涨(日志文件66G),  日志备份作业执行很久没完成, 手工...
  • ap0405140
  • ap0405140
  • 2015年12月09日 10:52
  • 1098

SQLServer:删除log文件和清空日志的方法

原文地址:http://www.cnblogs.com/rainman/p/3469225.html 1、删除LOG2. 清空日志3. 收缩数据库文件4. 截断事务日志 ...
  • sinat_15155817
  • sinat_15155817
  • 2016年08月31日 16:59
  • 11799

SqlServer 数据库日志无法收缩处理过程

今天按常用方法收缩一个测试用的数据库日志,发现没法收缩!
  • kk185800961
  • kk185800961
  • 2014年12月11日 13:45
  • 3984
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何缩小SQL SERVER日志文件
举报原因:
原因补充:

(最多只允许输入30个字)