SQL Server 数据库清除日志的方法
清理SQL Server数据库日志的两种方法

清理SQL Server数据库日志的两种方法sql server数据库使用时间长了,日志文件会很大,占用过多系统资源,数据库可能会报 log full 的错误,甚至磁盘空间占满让数据库处于不可用状态,这个时候我们需要清理数据库,以前有人开发了数据库日志清理工具,好像还要收费,其实很简单就可以完成这个操作,请跟我来:清理sql server数据库日志可用两种方法:方法一:清空日志。
1、打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2、再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至: ,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
方法二:有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
1、删除LOG分离数据库企业管理器->服务器->数据库->右键->分离数据库2、删除LOG文件附加数据库企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有500多K。
注意:建议使用第一种方法。
如果以后,不想要它变大。
SQL2000下使用:在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
或用SQL语句:alter database 数据库名 set recovery simple另外,数据库属性有两个选项,与事务日志的增长有关:Truncate log on checkpoint(此选项用于SQL7.0,SQL 2000中即故障恢复模型选择为简单模型)当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将 Truncate log on checkpoint 选项设为True 时才能进行。
清除sql日志

企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
a.分离数据库:
企业管理器--服务器--数据库--右键--分离数据库
b.在我的电脑中删除LOG文件
c.附加数据库:
企业管理器--服务器--数据库--右键--附加数据库
此法将生成新的LOG,大小只有500多K
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
日志文件满而造成SQL数据库无法写入文件时,可用两种方法:
一种方法:清空日志。
1.打开查询分析器,输入命令
DUMP TRANSACTION 数据库名 WITH NO_LOG
2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
或不能备份日志(truncate log on checkpoint选项为1),那么就无法进行数据的恢复了,或者
只能恢复到最近一次的备份的数据了。
以下简单说明恢复数据方法:
1,如果误操作之前存在一个全库备份(或已有多个差异备份或增量备份),首先要做的事就是进进行一次日志备份(如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那你就死翘了)
SQL SERVER清除日志的四种方法

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'
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的数据库名
SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
SQLSERVER清除日志的四种方法

SQLSERVER清除日志的四种方法SQL Server 是一款功能强大的数据库管理系统,但由于其日志文件的持续增长,可能会占用大量的磁盘空间。
为了解决这个问题,SQL Server 提供了多种方法来清除日志。
本文将介绍 SQL Server 清除日志的四种常见方法。
方法一:备份日志备份日志是最常用的清除 SQL Server 日志的方法之一、备份日志将日志文件中已经提交的事务从日志文件中删除,并将未提交的事务保存在日志中。
这样可以大大减小日志文件的大小,释放磁盘空间。
备份日志的具体步骤如下:1. 在 SQL Server Management Studio 中选择要备份日志的数据库。
2.右键单击数据库,选择“任务”>“备份”。
3.在“备份数据库”对话框中,选择“事务日志”。
4.在“备份到”下拉列表中选择备份文件的位置和名称。
5.单击“确定”开始备份日志。
备份日志的频率取决于数据库的需求,可以每天备份一次,也可以根据业务需求更频繁地备份。
方法二:备份并截断日志备份并截断日志是另一种清除 SQL Server 日志的常见方法。
该方法包括备份日志和截断日志两个步骤。
备份日志的作用是和方法一相同,截断日志的作用是删除已经备份的日志,释放磁盘空间。
备份并截断日志的具体步骤如下:1. 在 SQL Server Management Studio 中选择要备份和截断日志的数据库。
2.右键单击数据库,选择“任务”>“备份”。
3.在“备份数据库”对话框中,选择“事务日志”。
4.在“备份到”下拉列表中选择备份文件的位置和名称。
5.单击“确定”开始备份日志。
6. 在 SQL Server Management Studio 中选择要截断日志的数据库。
7.右键单击数据库,选择“任务”>“收缩”>“数据库文件”。
8.选择“日志文件”,设置“收缩动作”为“释放未使用的空间”,并选择“重新组织文件以使空间最优化”,然后单击“确定”开始截断日志。
清理 sql server 数据库日志的几种方法

清理 SQL Server 数据库日志的几种方法随着企业数据量的不断增加,数据库的日志文件也会随之增长。
数据库日志文件的不断增长会消耗大量磁盘空间,甚至会影响数据库的性能。
定期清理数据库日志是数据库管理的一个重要环节。
本文将介绍清理 SQL Server 数据库日志的几种方法,帮助数据库管理员解决数据库日志文件过大的问题。
一、备份事务日志1. 利用 SQL Server Management Studio (SSMS) 进行备份通过使用 SSMS,可以进行数据库事务日志的定期备份。
在 SSMS 中选择要备份的数据库,右键点击“任务”->“备份”,在备份类型中选择“仅事务日志”,即可完成事务日志的备份。
2. 利用 T-SQL 命令进行备份在 SQL Server 中,可以通过使用 T-SQL 命令进行事务日志的备份。
例如:```BACKUP LOG [数据库名] TO DISK = '备份文件路径' WITH NOFORMAT, NOINIT, NAME = '备份名称', SKIP, NOUNLOAD, STATS = 10```通过上述两种备份方式,可以定期备份数据库的事务日志,避免日志文件过大。
二、修改日志文件的增长方式1. 修改日志文件增长的百分比在数据库管理中,可以通过修改数据库的日志文件的增长百分比来控制日志文件的增长。
通过减小增长百分比,可以减缓日志文件的增长速度,从而减少磁盘空间的消耗。
2. 修改日志文件的增长大小除了修改增长百分比外,还可以通过修改日志文件的增长大小来控制日志文件的大小。
将增长大小设置为一个合适的值,可以避免日志文件过大,减少磁盘空间的占用。
三、截断事务日志1. 利用 SQL Server Management Studio (SSMS) 进行截断通过使用 SSMS,可以对数据库的事务日志进行截断。
在 SSMS 中选择要截断的数据库,右键点击“任务”->“收缩”->“文件”,选择要收缩的文件类型为“日志”,即可完成事务日志的截断。
数据库事务日志清除操作指南

SQL Server事务日志备份的清除操作指南事务日志清除目的:SQL Server数据库由一个.mdf文件与.ldf文件组成,mdf是主数据存储的文件,ldf是数据库日志存储的文件。
对于日志文件,因每次SQL 发生的操作(插入、更新、删除)都会把操作日志记录到日志文件中(以备可通过日志还原),因此日志文件每天都会增长(增长速度会明显比mdf文件快,有时一个月没清除就会达到几个G的大小),因此需要对事务日志中已有的历史不活动的日志做清除,以防止数据库ldf文件的无限彭胀。
(目前还未用过ldf文件来做恢复的,况且用他恢复也不安全,因此ldf文件中数据可以清除).SQL通过对事务日志备份动作来对不活动的日志进行清除截断。
在定义数据库的事务日志清除前,请先确保Sql server服务器端 Sql Server agent服务是否开启,只有服务器端的Sql Server agent服务开启才能进行如下述的服务库端的自动备份。
第一步:找到需设置事务日志备份的数据库:如lm_hr点击鼠标右键先选择”所第二步:在备份四个选项中,请选择“事务日志”项目在备份四个选项中,第三步:选择好“事务日志”之后,点击“添加”按钮选择好“事务日如’备份到’下方已有指定文件的路径,请第四步:设置文件名以及选择文件名的存储路径点击“”按钮,选择注意:存储路径最好不要指向C盘(系统文件盘),防止系统重新安装时,文件被格式化!存放第五步:设置好文件的存储路径和名称后,点击“确定”设置好文件的存储第六步:选择“重写”中的“重写现有媒体”选项选择“重写现有媒体”,这种第七步:选择“调度”对日志备份进行时间调度设置在“调度”前方框里打上‘√’,第八步:对“调度”时间进行详细设置单击点击“更填写调度的名称,以第九步:对“发生频率”,“每日频率”以及“持续时间”设置第十步:设置完毕,直接点击“确定”按钮若用户希望数据库从2006-12-16开始每天夜里1点自动备份数据”发生频设置完毕,直接点击“确定”按钮。
SQL Server 2008 R2 分离数据库删除日志文件的方法

SQL Server 2008 R2分离数据库删除日志文件方法1. 找到待清理数据库的实体文件,在硬盘中的路径,例如:C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\,其中dayang.mdf为数据文件,dayang_log.ldf为日志文件。
最终目标是:清除LDF文件释放硬盘空间2. 在企业管理器中右键点击该数据库→任务→分离。
提示:分离数据库有风险,一定要在分离前进行数据库备份!!!3. 确保没有用户对该数据库进行操作,如果有人使用,点击清除,之后确定。
分离数据库完成。
(注意:在执行分离数据库之前,建议拔掉SQL SERVER数据库服务器的网线,以保障后续过程不会有其它进程操作数据库。
否则,一旦在下述配置过程中,有进程访问数据库,将造成数据库崩溃,请特别注意)4. 查看数据库实体文件,可以看到dayang.mdf,dayang_log.ldf的修改时间为当前时间。
5. 将dayang_log.ldf文件重命名。
这里将其扩展名后面输入数字123。
6. 在企业管理器中,右键点击数据库→附加。
7.点击添加按钮,选中刚才分离出来的dayang.mdf文件,如下图所示。
日志文件状态消息提示找不到。
删除日志所在行,点击确定。
附加数据库完成。
7. 查看数据库实体所在的文件夹,系统会自动生成新的日志文件dayang_log.LDF,但大小却比之前的LDF要小很多。
之前分离出来的日志文件可以将其删除。
如不能正常使用,需要重新分离,再执行上述步骤。
永和九年,岁在癸丑,暮春之初,会于会稽山阴之兰亭,修禊事也。
群贤毕至,少长咸集。
此地有崇山峻岭,茂林修竹;又有清流激湍,映带左右,引以为流觞曲水,列坐其次。
虽无丝竹管弦之盛,一觞一咏,亦足以畅叙幽情。
是日也,天朗气清,惠风和畅,仰观宇宙之大,俯察品类之盛,所以游目骋怀,足以极视听之娱,信可乐也。
多方法清理SQL server日志

多方法清理SQL Server日志1.手动清理1. 将恢复模式改成“简单”右键要清理的数据库名-属性,切换到选项,将恢复模式修改为简单,如下图1,然后点确定。
2、收缩日志还是右键要清理的数据库名—任务—收缩—文件,按如图2进行设置,设置完后点确定即可3.清理完手动恢复完整模式二、自动清理(使用SQL代理定时执行清理任务)1、新建作业如下图3,我们右键作业—新建作业即可开始新建一个作业了USE [master]GOALTER DATABASE 数据库名称SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE 数据库名称SET RECOVERY SIMPLE --简单模式GOUSE 数据库名称GODBCC SHRINKFILE (N'DEMO_log' , 1, TRUNCATEONLY)--将数据库日志文件收缩到1MGO------DEMO_LOG是日志文件名称,可以新建查询用select * from sys.database_files查看USE [master]GOALTER DATABASE 数据库名称SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE 数据库名称SET RECOVERY FULL --还原为完全模式GO三、新建维护计划定时清理1.维护计划向导2.选择维护任务3.选择需要收缩的数据库之后,下一步至完成4.视图--工具箱--把执行I-SQL语句拉到右窗品--把收缩数据库箭头关联至“执行T-sql语句”5.双击“执行T-SQL语句”任务,打开对话框键入语句5.记得编辑“新建作业计划”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server 数据库清除日志的方法方法一:1、打开查询分析器,输入命令BACKUP LOG database_name WITH NO_LOG2、再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了。
方法二:设置检查点,自动截断日志一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如用户数据库cwbase1)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据方法三:通过SQL收缩日志把代码复制到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可SET NOCOUNT ONDECLARE @LogicalFileNamesysname,@MaxMinutes INT,@NewSize INTUSE tablename -- 要操作的数据库名SELECT @LogicalFileName = 'tablename_log', -- 日志文件名@MaxMinutes = 10, -- Limit on time allowed to wrap log.@NewSize = 1 -- 你想设定的日志文件的大小(M)-- Setup / initializeDECLARE @OriginalSizeintSELECT @OriginalSize = sizeFROM sysfilesWHERE name = @LogicalFileNameSELECT 'Original Size of ' + db_name() + ' LOG is ' +CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'FROM sysfilesWHERE name = @LogicalFileNameCREATE 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 expiredAND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)AND (@OriginalSize * 8 /1024) > @NewSizeBEGIN -- Outer loop.SELECT @Counter = 0WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))BEGIN -- updateINSERT DummyTrans VALUES ('Fill Log')DELETE DummyTransSELECT @Counter = @Counter + 1ENDEXEC (@TruncLog)ENDSELECT 'Final Size of ' + db_name() + ' LOG is ' +CONVERT(VARCHAR(30),size) + ' 8K pages or ' +CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'FROM sysfilesWHERE name = @LogicalFileNameDROP TABLE DummyTransSET NOCOUNT OFF方法四:删除日志文件。
此方法有一定的风险性,因为sql server的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
1、操作前请断开所有数据库连接。
2、分离数据库分离数据库:企业管理器->服务器->数据库->cwbase1->右键->分离数据库分离后,cwbase1数据库被删除,但保留了数据文件和日志文件3、删除log物理文件删除LOG物理文件,然后附加数据库:企业管理器->服务器->数据库->右键->附加数据库此法生成新的log,大小只有500多k。
注意:建议使用第一种方法。
操作前请确保所有操作员都已经推出系统,断开数据库的连接。
以上操作前,请务必做好数据备份!1.sql server 2005 清除日志语句dump transaction 数据库名称with no_logbackup log 数据库名称with no_logdbccshrinkdatabase(数据库名称)2.sql server 2008 清除日志语句sp_dboption数据库名称, "trunc. log on chkpt.", truecheckpointsp_dboption数据库名称, "autoshrink", true清除SQLSERVER数据库日志文件的方法:1、先将这个数据库卸载:EXEC sp_detach_db 'database_name', 'true'然后将该数据库所对应的Log文件删掉;最后,再将这个数据库注册到系统里面:EXEC sp_attach_db @dbname = N'database_name',@filename1 = N'e:\mssql7\data\database_name_data.mdf'2、数据库上点右键-所有任务-收缩数据库-选择收缩文件为LOG 。
3、清除SQLSERVER数据库日志的方法:*******下面是转发的邮件*****The shrinking of log files is not immediate in SQL Server 7.0. The shrinking of log files does not occur until the active portion of thelog moves. As updates are performed on the database, the shrink operation occurs at checkpoints or transaction log backups. Each log file is marked with the target_percent for the shrink operation. Each subsequent log backup or log truncation attempts to shrink the file to bring its size as close to the target_percent as possible. Because a log file can be shrunk only to a virtual log file boundary, it may not be possible to shrink a log file to a size smaller than the size of avirtual log file even if it is not being used. Please refer to SQL Book Online for the details.RESOLUTIONBelow script will help to shrink the log file immediately, pls keep it running for 3~4 minutes and then stop it manually.\* Run "select fileid, name,filename from ..sysfiles" to getthe fileid which you want to shrink *\usegodbccshrinkfile(fileid,notruncate)dbccshrinkfile(fileid,truncateonly)create table t1 (char1 char(4000))declare @iintselect @i = 0while (1 = 1)beginwhile (@i< 100)begininsert into t1 values ('a') select @i = @i +1endtruncate table t1backup log with truncate_onlyendgo*****转发内容结束*****SQLServer数据库日志清理清除sqlserver2005日志有时候当系统运行时间比较长的时候,我们把备份的数据库还原的时候发现,数据库中数据文件和日志文件变的好大,特别是日志文件。