数据库日志清理 如何清除SQL数据库日志
各位老铁们,大家好,今天由我来为大家分享数据库日志清理,以及如何清除SQL数据库日志的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
如何清除SQL数据库日志
教你如何清除SQL日志
1.打开查询分析器,输入命令
DUMP TRANSACTION数据库名 WITH NO_LOG
2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
清除Log有两种方法:
1.自动清除法
开放数据库选项 Trunc Log on Chkpt,使数据库系统每隔一段时间自动清除Log。此方法的优点是无须人工干预,由SQL Server自动执行,并且一般不会出现Log溢满的情况;缺点是只清除Log而不做备份。
2.手动清除法
执行命令“mp transaction”来清除Log。以下两条命令都可以清除日志:
mp transaction with truncate_only
mp transaction with no_log
通常删除事务日志中不活跃的部分可使用“mp transaction with trancate_only”命令,这条命令写进事务日志时,还要做必要的并发性检查。SYBASE提供“mp transaction with no_log”来处理某些非常紧迫的情况,使用这条命令有很大的危险性,SQL Server会弹出一条警告信息。为了尽量确保数据库的一致性,你应将它作为“最后一招”。
以上两种方法只是清除日志,而不做日志备份,若想备份日志,应执行“mp transaction database_name to mpdevice”命令。
清除后对数据库没有影响
SQL数据库日志文件 可以删除吗
数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作。可以通过直接删除log文件和清空日志在清除数据库日志。
一、删除LOG
1、分离数据库。分离数据库之前一定要做好数据库的全备份,选择数据库——右键——任务——分离。
勾选删除连接
分离后在数据库列表将看不到已分离的数据库。
2、删除LOG文件
3、附加数据库,附加的时候会提醒找不到log文件。
删除数据库信息信息的ldf文件:
附加数据库之后将生成新的日志文件log,新的日志文件的大小事504K。
也可以通过命令才完成以上的操作:
use master;
exec sp_detach_db@dbname='TestDB';
exec sp_attach_single_file_db@dbname='TestDB',@physname='D:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\TestDB.mdf'
二、清空日志
该命令在SQL Server 2005和2000支持,SQL Server 2008不支持该命令。
DUMP TRANSACTION TestDB WITH NO_LOG
三、收缩数据库文件
DBCC SHRINKFILE('TestDB_log',1)
四、截断事务日志
BACKUP LOG TestDB WITH NO_LOG
该命令在SQL Server 2008也是不支持,在SQL Server 2005和2000可以使用。
清除SQLServer2005的LOG文件
--最好备份日志,以后可通过日志恢复数据。。。
以下为日志处理方法
一般不建议做第4,6两步
第4步不安全,有可能损坏数据库或丢失数据
第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.
--*/
--下面的所有库名都指你要处理的数据库的库名
1.清空日志
DUMPTRANSACTION库名 WITH NO_LOG
2.截断事务日志:
BACKUPLOG库名 WITH NO_LOG
3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
也可以用SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(库名)
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select* from sysfiles
DBCC SHRINKFILE(1)
4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)
a.分离数据库:
企业管理器--服务器--数据库--右键--分离数据库
b.在我的电脑中删除LOG文件
c.附加数据库:
企业管理器--服务器--数据库--右键--附加数据库
此法将生成新的LOG,大小只有500多K
或用代码:
下面的示例分离 pubs,然后将 pubs中的一个文件附加到当前服务器。
a.分离
EXEC sp_detach_db@dbname='库名'
b.删除日志文件
c.再附加
EXEC sp_attach_single_file_db@dbname='库名',
@physname='c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'
5.为了以后能自动收缩,做如下设置:
企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"
--SQL语句设置方式:
EXEC sp_dboption'库名','autoshrink','TRUE'
6.如果想以后不让它日志增长得太大
企业管理器--服务器--右键数据库--属性--事务日志
--将文件增长限制为xM(x是你允许的最大数据文件大小)
--SQL语句的设置方式:
alterdatabase库名 modify file(name=逻辑文件名,maxsize=20)
SQL Server数据库使用时间一长就会导致Log文件逐渐变的庞大,想备份一下数据库,想发给谁都很困难
运行下面的语句就可以清到Log文件只剩下1M左右的空间.
DUMP TRANSACTION数据库名 WITH NO_LOG
DBCC SHRINKDATABASE('数据库名',TRUNCATEONLY)
不重启SQL服务,删除SQLServer系统日志
SQLServer的系统日志过大,就会引起SQLServer服务器无法启动等一系列问题。今天我遇到了这个问题,在网上搜索了一下,解决方法是删除就可以了,可是当前的ErrorLog正在被SQL使用无法删除啊,要删除只能停止SQL服务器,难道就没有别得办法了吗?
回答是肯定的:使用以下存储过程:EXEC sp_cycle_errorlog
注释
每次启动 SQL Server时,当前错误日志重新命名为 errorlog.1;errorlog.1成为 errorlog.2,errorlog.2成为 errorlog.3,依次类推。sp_cycle_errorlog使您得以循环错误日志文件,而不必停止而后再启动服务器。
SQL server数据库日志满了怎么处理
一、删除日志文件。
二、手动收缩。操作如下:
1、在数据库页面中选择“选项”;
2、在打开的选项页面中,将恢复模式更改为“简单”;
3、然后点击下方的“确定”;
4、然后在数据库文件和文件组汇总,将文件类型更改为“日志”;
5、在下方的收缩操作中,选择“将文件收缩到1MB”即可,也可以根据需求自行设置文件收缩大小。
如何清空sql数据库的日志文件
SQLSERVER的数据库日志占用很大的空间,下面提供三种方法用于清除无用的数据库日志文件\x0d\x0a方法一: \x0d\x0a1、打开查询分析器,输入命令 \x0d\x0aBACKUP LOG database_name WITH NO_LOG \x0d\x0a2、再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了。 \x0d\x0a\x0d\x0a方法二: \x0d\x0a设置检查点,自动截断日志 \x0d\x0a\x0d\x0a一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大 \x0d\x0a1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如用户数据库cwbase1)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存 \x0d\x0a2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定 \x0d\x0a3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据 \x0d\x0a\x0d\x0a方法三:通过SQL收缩日志 \x0d\x0a\x0d\x0a把代码复制到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可 \x0d\x0a\x0d\x0aSET NOCOUNT ON \x0d\x0aDECLARE@LogicalFileName sysname, \x0d\x0a@MaxMinutes INT, \x0d\x0a@NewSize INT \x0d\x0a\x0d\x0aUSE tablename--要操作的数据库名 \x0d\x0aSELECT@LogicalFileName='tablename_log',--日志文件名 \x0d\x0a@MaxMinutes= 10,-- Limit on time allowed to wrap log. \x0d\x0a@NewSize= 1--你想设定的日志文件的大小(M) \x0d\x0a\x0d\x0a-- Setup/ initialize \x0d\x0aDECLARE@OriginalSize int \x0d\x0aSELECT@OriginalSize= size \x0d\x0aFROM sysfiles \x0d\x0aWHERE name=@LogicalFileName \x0d\x0aSELECT'Original Size of'+ db_name()+' LOG is'+ \x0d\x0aCONVERT(VARCHAR(30),@OriginalSize)+' 8K pages or'+ \x0d\x0aCONVERT(VARCHAR(30),(@OriginalSize*8/1024))+'MB' \x0d\x0aFROM sysfiles \x0d\x0aWHERE name=@LogicalFileName \x0d\x0aCREATE TABLE DummyTrans \x0d\x0a(DummyColumn char(8000) not null) \x0d\x0a\x0d\x0aDECLARE@Counter INT, \x0d\x0a@StartTime DATETIME, \x0d\x0a@TruncLog VARCHAR(255) \x0d\x0aSELECT@StartTime= GETDATE(), \x0d\x0a@TruncLog='BACKUP LOG'+ db_name()+' WITH TRUNCATE_ONLY' \x0d\x0a\x0d\x0aDBCC SHRINKFILE(@LogicalFileName,@NewSize) \x0d\x0aEXEC(@TruncLog) \x0d\x0a-- Wrap the log if necessary. \x0d\x0aWHILE@MaxMinutes>DATEDIFF(mi,@StartTime, GETDATE())-- time has not expired \x0d\x0aAND@OriginalSize=(SELECT size FROM sysfiles WHERE name=@LogicalFileName) \x0d\x0aAND(@OriginalSize* 8/1024)>@NewSize \x0d\x0aBEGIN-- Outer loop. \x0d\x0aSELECT@Counter= 0 \x0d\x0aWHILE((@Counter<@OriginalSize/ 16) AND(@Counter< 50000)) \x0d\x0aBEGIN-- update \x0d\x0aINSERT DummyTrans VALUES('Fill Log') \x0d\x0aDELETE DummyTrans \x0d\x0aSELECT@Counter=@Counter+ 1 \x0d\x0aEND \x0d\x0aEXEC(@TruncLog) \x0d\x0aEND \x0d\x0aSELECT'Final Size of'+ db_name()+' LOG is'+ \x0d\x0aCONVERT(VARCHAR(30),size)+' 8K pages or'+ \x0d\x0aCONVERT(VARCHAR(30),(size*8/1024))+'MB' \x0d\x0aFROM sysfiles \x0d\x0aWHERE name=@LogicalFileName \x0d\x0aDROP TABLE DummyTrans \x0d\x0aSET NOCOUNT OFF \x0d\x0a\x0d\x0a方法四:删除日志文件。 \x0d\x0a\x0d\x0a此方法有一定的风险性,因为sql server的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。1、操作前请断开所有数据库连接。 \x0d\x0a2、分离数据库 \x0d\x0a分离数据库:企业管理器->服务器->数据库->cwbase1->右键->分离数据库 \x0d\x0a分离后,cwbase1数据库被删除,但保留了数据文件和日志文件 \x0d\x0a3、删除log物理文件 \x0d\x0a删除LOG物理文件,然后附加数据库:企业管理器->服务器->数据库->右键->附加数据库 \x0d\x0a此法生成新的log,大小只有500多k。 \x0d\x0a\x0d\x0a注意:建议使用第一种方法。操作前请确保所有操作员都已经推出系统,断开数据库的连接。 \x0d\x0a\x0d\x0a以上操作前,请务必做好数据备份!\x0d\x0a\x0d\x0a1.sql server 2005清除日志语句 \x0d\x0a\x0d\x0adump transaction数据库名称 with no_log \x0d\x0abackup log数据库名称 with no_log \x0d\x0adbcc shrinkdatabase(数据库名称)
关于数据库日志清理,如何清除SQL数据库日志的介绍到此结束,希望对大家有所帮助。