数据库清除日志文件(LDF文件过大)

清除日志:

复制代码 代码如下:

DECLARE @LogicalFileName sysname,

@MaxMinutes INT,

@NewSize INT

USE szwzcheck -- 要操作的数据库名

SELECT @LogicalFileName = 'szwzcheck_Log', -- 日志文件名

@MaxMinutes = 10, -- Limit on time allowed to wrap log.

@NewSize = 20 -- 你想设定的日志文件的大小(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

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

把szwzcheck换成你数据库的名字即可,在查询分析器里面运行。

有全角的空格(为了显示好看),你自己把他换一下.

脚本之家编辑注:

一般情况下,用下面的语句更简单

复制代码 代码如下:

DUMP TRANSACTION [jb51] WITH NO_LOG

BACKUP LOG [jb51] WITH NO_LOG

DBCC SHRINKDATABASE([jb51])

其中jb51就是你要处理的数据库名。

时间: 2024-11-26 07:53:46

数据库清除日志文件(LDF文件过大)的相关文章

[20160830]清除日志与跟踪文件.txt

[20160830]清除日志与跟踪文件.txt --我们数据库的dataguard磁盘空间非常紧张,前几天因为一些异常业务操作,导致dataguard磁盘空间不足, --日志切换情况: Date                Day    Total   H0   h1   h2   h3   h4   h5   h6   h7   h8   h9  h10  h11  h12  h13  h14  h15  h16  h17  h18  h19  h20  h21  h22  h23    

数据库清除日志文件(LDF文件过大)_MsSql

清除日志: 复制代码 代码如下: DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT USE szwzcheck -- 要操作的数据库名 SELECT @LogicalFileName = 'szwzcheck_Log', -- 日志文件名 @MaxMinutes = 10, -- Limit on time allowed to wrap log. @NewSize = 20 -- 你想设定的日志文件的大小(M) --

SQL Server 数据库清除日志的方法_mssql2005

方法一: 1.打开查询分析器,输入命令 BACKUP LOG database_name WITH NO_LOG 2.再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了. 方法二: 设置检查点,自动截断日志 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大 1.设置数据库模式为简单模

SQLserver 2005文件和文件组的作用说明_mssql2005

1.文件和文件组的含义与关系 每个数据库有一个主数据文件.和若干个从文件.文件是数据库的物理体现. 文件组可以包括分布在多个逻辑分区的文件,实现负载平衡.文件组允许对文件进行分组,以便于管理和数据的分配/放置.例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf.Data2.ndf 和 Data3.ndf),并将这三个文件指派到文件组 fgroup1 中.然后,可以明确地在文件组 fgroup1 上创建一个表.对表中数据的查询将分散到三个磁盘上,因而性能得以提高.在 RAID(磁盘冗

SQL SERVER 文件和文件组_MsSql

1.文件和文件组的含义与关系       每个数据库有一个主数据文件.和若干个从文件.文件是数据库的物理体现. 文件组可以包括分布在多个逻辑分区的文件,实现负载平衡.文件组允许对文件进行分组,以便于管理和数据的分配/放置.例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf.Data2.ndf   和   Data3.ndf),并将这三个文件指派到文件组   fgroup1   中.然后,可以明确地在文件组   fgroup1   上创建一个表.对表中数据的查询将分散到三个磁盘上,因

Sql Server 2000 如何减小数据库日志文件.ldf的文件大小

-- 减小数据库日志文件LDF大小DECLARE @db NVARCHAR(20) SET @db = '数据库名' DUMP TRANSACTION @db with no_log BACKUP LOG @db with no_log DBCC SHRINKDATABASE(@db)前几天我的数据库SQL server 报日志满错误,于是变改了log.ldf的空间为20G,虽然不报错了,但占了硬盘很大空间啊,还要备份数据库呢.这样我就在网上搜索到上面脚本,在确定数据库目前运行稳定,不需要查询以

自动恢复MySQL数据库的日志文件思路分享及解决方案_Mysql

如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据."mysqlbinlog:用于处理二进制日志文件的实用工具". 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名.一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径.如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出.启用二进制日志的选项为 --log-b

教你自动恢复MySQL数据库的日志文件(binlog)_Mysql

如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据."mysqlbinlog:用于处理二进制日志文件的实用工具". 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名.一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径.如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出.启用二进制日志的选项为 --log-b

文件的拷贝与删除-通过线程用BufferedWriter将系统当前时间写入日志文件失败,求大神指导

问题描述 通过线程用BufferedWriter将系统当前时间写入日志文件失败,求大神指导 String path = "d:/log"; public synchronized void write(){ try { file = new File("d:/log/"+time+".log"); file.createNewFile(); fw = new FileWriter(file); bw = new BufferedWriter(fw