截断事务日志
清除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那你就死翘了)
sqlserver日志已满处理方法
sql server日志已满处理方法sql server日志已满处理方法学习2009-07-2615:42:33阅读323评论0字号:大中小SQL数据库日志文件太大,或者使用软件时提示日志已满的处理方法.sql出现这种题提示,有二种情况,一你的电脑存放数据库文件的盘符不是NTFS格式的,而是别的格式,如FAT32只支持一个文件最大4G,所以超过4G就没有办法再写文件,sql 就会提示日志文件已满.另外就是NTFS格式的,前台见一个卖服装的朋友店里数据库主文件只有100多M,而日志文件却有40G,幸亏是他的硬盘空间多,不然软件早不能用了.估计软件数据库设计的有问题.后来给他重新建了一个日志收银速度明显加快.一--在SQL查询分析器执行--按下边的步骤一步一步的做--删除日志前要先对以前的数据库进行备份(这一步必须做,已免数据出现丢失)--1、使数据库脱机use masterexec sp_Detach_db test,true--2、把对应的.ldf文件删除或改名--需手工做自己手工删除数据库文件的所在目录下的.ldf文件--3、加载数据文件exec sp_attach_single_file_db test,'D:\Program Files\Microsoft SQL Server\MSSQL\Data\test_Data.MDF'--4设置日志文件的增长方式alter database test set recovery simple二1.清空日志DUMP TRANSACTION库名WITH NO_LOG2.截断事务日志:BACKUP LOG数据库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select*from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后将pubs中的一个文件附加到当前服务器。
清理 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 中选择要截断的数据库,右键点击“任务”->“收缩”->“文件”,选择要收缩的文件类型为“日志”,即可完成事务日志的截断。
javalog日志分割原理
javalog日志分割原理在Java中,日志分割是指将日志文件按照时间、大小等规则进行分割,以便于管理和回溯。
日志分割是一个重要的功能,它能够帮助我们有效地管理日志文件,防止日志文件过大导致磁盘空间不足,提高日志的查询速度和可读性。
Java中的日志分割可以通过两种方式实现:时间分割和大小分割。
1.时间分割:时间分割是按照一定的时间间隔来划分日志文件。
一般情况下,我们可以设置每天生成一个新的日志文件,或者按小时、按周、按月等时间间隔生成新的日志文件。
时间分割的原理是通过定时任务来触发日志文件的切割,当时间间隔达到设定值后,触发切割操作。
切割操作的实现方式可以有两种:一是将当前的日志文件重命名,并生成一个新的日志文件,二是关闭当前的日志文件,创建一个新的日志文件。
2.大小分割:大小分割是按照日志文件的大小来划分日志文件。
当日志文件的大小达到一定的阈值后,就会自动切割成一个新的日志文件。
Java中的日志框架,如Log4j、Logback等,也提供了相关的配置项来支持大小分割。
我们可以通过配置文件来指定日志文件的最大大小,例如通过设置`rollingPolicy`的`SizeBasedTriggeringPolicy`属性来实现大小分割。
大小分割的原理是通过检测当前日志文件的大小,当大小达到设定的阈值后,触发切割操作。
切割操作的实现方式可以有两种:一是将当前的日志文件重命名,并生成一个新的日志文件,二是关闭当前的日志文件,创建一个新的日志文件。
无论是时间分割还是大小分割,切割后的日志文件通常会被命名为包含时间戳的文件名,以便于进行管理和查询。
例如,按天分割的日志文件可以使用`log-2024-07-23.log`的命名格式,按大小分割的日志文件可以使用`log-1.log`、`log-2.log`等的命名格式。
日志分割的机制可以通过多种方式实现,例如基于时间的切割、基于大小的切割、基于条件触发的切割等。
sqlserver事务日志已满的几种解决方案
sqlserver事务⽇志已满的⼏种解决⽅案⼀.删除⽇志⽂件:(不建议)⼆.⼿动收缩:1.数据库右键属性-选项-恢复模式-下拉选择简单-最后点击确定2.右键数据库-任务-收缩-⽂件类型-下拉选择⽇志-收缩操作-在释放未使⽤....(默认收缩到1MB)-最后点击确定3.最后别忘了回到第⼀步骤把恢复模式改为完整!三.⾃动收缩:1.为了以后能⾃动收缩,做如下设置:企业管理器–服务器–右键数据库–属性–选项–选择”⾃动收缩”QL语句设置⽅式:EXEC sp_dboption ‘数据库名’, ‘autoshrink’, ‘TRUE’2..如果想以后不让它⽇志增长得太⼤企业管理器–服务器–右键数据库–属性–事务⽇志–将⽂件增长限制为xM(x是你允许的最⼤数据⽂件⼤⼩)–SQL语句的设置⽅式:alter database 数据库名 modify file(name=逻辑⽂件名,maxsize=20)四.分离附加:分离主数据库-删除.ldf⽂件-附件数据库;五.使⽤sql语句:(可设置为计划)--将数据库设为简单模式。
⽇志⽂件⾃动断开。
alter database dbname set recovery simple--查看⽇志⽂件状况use dbnamedbcc shrinkfile('logname') --like XXXX_log--恢复数据库模式alter database dbname set recovery full六.备份⽇志:SQL Server 2008 先备份⽇志将⽇志截断.再⽤dbcc shrinkfile(⽇志⽂件,1024)收缩⽇志⽂件。
七.设置简单模式:设置为简单模式不记录⽇志;⼋.sql⾃动缩减⽇志:针对⽇志这个问题,建议⼿动写个⼩⼯具(SQL提供⾃动缩减⽇志的脚本写法),添加到任务计划中,定时执⾏!可以节省很多磁盘空间!。
截断数据库日志方法
截断数据库日志方法方法一:备份数据库日志备份数据库日志是一种最常见和简单的截断数据库日志的方法。
通过备份数据库日志操作,可以将日志文件备份到其他磁盘或存储设备中,并从原日志文件中截断删除已备份的部分。
这样可以释放出大量的存储空间,同时保留最近的事务日志记录。
备份数据库日志的具体步骤如下:1.登录数据库管理系统,选择备份和恢复功能。
2.选择对应的数据库,并选择备份数据库日志。
3.选择备份的目标位置和备份方式,开始备份数据库日志。
4.备份完成后,进行日志截断操作,删除已备份的日志文件。
方法二:自动截断有些数据库管理系统支持自动截断数据库日志的功能。
通过设定合适的参数,数据库系统可以在特定条件下自动截断数据库日志文件,并释放存储空间。
自动截断数据库日志的设置步骤如下:1.登录数据库管理系统,选择配置管理功能。
2.找到数据库日志相关的参数设置,如日志文件大小、自动截断间隔等。
3.根据数据库性能和存储需求,设置合适的参数值。
4.保存并应用参数设置。
方法三:手动截断手动截断数据库日志是一种比较常见的方法,它需要管理员手动执行对应的命令,对日志文件进行截断操作。
这种方式适用于一些数据库管理系统不支持自动截断的情况。
手动截断数据库日志的步骤如下:1.登录数据库管理系统,打开命令行工具或管理工具。
2.运行合适的日志截断命令,如"TRUNCATELOG"。
3.等待命令执行完成,确认日志文件已被截断。
需要注意的是,手动截断数据库日志时,要确保数据库处于正常运行状态,并且及时备份好重要的事务日志数据,以免造成数据损失。
方法四:调整日志文件大小有些数据库管理系统支持在线调整日志文件大小的功能。
通过该功能,管理员可以根据数据库的实际需求,增加或减小数据库的日志文件大小,从而控制日志文件的增长速度,减小日志文件的空间占用。
调整日志文件大小的步骤如下:1.登录数据库管理系统,选择配置管理功能。
2.找到日志文件相关的参数设置,如日志文件大小、增长速度等。
解决开启SQLServersqlAlwaysonGroup事务日志增大的问题
解决开启SQLServersqlAlwaysonGroup事务⽇志增⼤的问题
配置了Alwayson之后,因为没有只能使⽤完全恢复模式,不能使⽤简单或⼤容量⽇志模式,所以⽇志不断增长,不能使⽤改变恢复模式的⽅式清空⽇志
⼿动操作收缩或截断⽇志也⽆效
读了⼀些⽂章后发现,有⼈使⽤
主要实例脱离可⽤性组 - 修改为简单恢复模式 -修改回完整恢复模式 - 完整备份 - 加回可⽤性组 -将辅助副本还原(注意是With NoRECOVERY) - 重启同步
这样虽然可⾏,但也太⿇烦了,对于俺们每天增长70GB的⽇志⽂件来说,操作未免太频繁了
也许是我对SQL Server太不熟悉了,其实只要在“备份⾸选项”(可⽤性组,右键,属性,)指定的数据库实例上“备份事务⽇志”即可将事务⽇志备份并截断
对于事务⽇志增长频繁的数据库只要建⽴⼀个维护计划,定期备份事务⽇志即可,可以是⼏分钟到⼀个⼩时
引⽤:
为什么完整备份不能截断事务⽇志。
sqlserver自动收缩日志原理
sqlserver自动收缩日志原理SQL Server 自动收缩日志是一种策略,用于控制和管理数据库事务日志的大小。
SQL Server 数据库有两种类型的日志:事务日志和错误日志。
事务日志记录了数据库中每个事务的所有操作,而错误日志记录了数据库运行过程中的错误和异常。
事务日志的大小是动态增长的,当事务日志文件达到一定大小时,系统会触发自动收缩日志操作,将不再使用的事务日志空间释放出来,并将事务日志文件的大小缩小到一个合适的大小。
自动收缩日志的原理可以简单概括为以下几个步骤:1. 日志截断:SQL Server 在进行自动收缩日志操作之前,会先进行日志截断操作。
日志截断是指将事务日志中已经提交的事务的日志记录清除,只保留未提交的事务和未完成的操作的日志。
这样可以释放事务日志空间并减小日志文件的大小。
2.压缩日志:日志截断之后,系统会根据事务日志的使用情况来评估是否需要压缩日志。
压缩日志是指将事务日志文件中未使用的空间释放掉,并将事务日志文件的大小减小到一个合适的大小。
这样可以提高数据库的性能和效率,减少磁盘空间的占用。
3.自动增长:在进行日志压缩之后,系统会重新评估并设置事务日志文件的自动增长属性。
自动增长属性是指事务日志文件在达到当前大小上限时,是否可以自动增加文件的大小。
自动增长可以确保当事务日志文件的大小不足以容纳新的日志记录时,系统可以自动增加事务日志文件的大小。
这样可以避免由于事务日志文件空间不足而导致数据库无法正常运行的问题。
总结起来,SQL Server 的自动收缩日志功能主要通过日志截断、压缩日志和自动增长等操作来控制和管理数据库事务日志的大小。
这样可以确保数据库的性能和效率,并减少磁盘空间的占用。
SQL SERVER 收缩数据库的命令
SQL SERVER 收缩数据库的命令1.清空日志DUMP T RANSACTION库名WIT H NO_LOG2.截断事务日志:BACKUP LOG数据库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后将pubs 中的一个文件附加到当前服务器。
a.分离E X E C sp_detach_db @dbname='pubs'b.删除日志文件c.再附加E X E C sp_attach_single_file_db @dbname='pubs',@physname='c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.m df'5.为了以后能自动收缩,做如下设置:企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:E X E C sp_dboption '数据库名', 'autoshrink', 'T RUE'6.如果想以后不让它日志增长得太大企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database数据库名modify file(nam e=逻辑文件名,maxsize=20)特别注意:请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.另外提供一种更简单的方法,本人屡试不爽,建议大家使用。
SQL 收缩日志
1、建议首先备份数据库(但不是必需的):
BACKUP DATABASE database_name TO LOG database_name TO backup_device
如果不需要当前事务日志中的记录进行数据库还原或没有足够的空间进行事务日志备份的的话,也可仅执行以下命令截断事务日志:
BACKUP LOG database_name WITH NO_LOG
3、收缩事务日志文件:
DBCC SHRINKFILE (log_file_name)
其中log_file_name是事务日志文件的逻辑名称,可以在企业管理器中数据库属性的“事务日志”页中看到(如Northwind数据库的默认事务日志文件逻辑名称为Northwind_log)。
4、如果日志文件仍然较大的话,可以尝试重复执行一次BACKUP LOG WITH NO_LOG和DBCC SHRINKFILE命令。
5、如果这时仍没有明显的效果,请执行DBCC OPENTRAN (database_name)检查当前数据库中是否存在长时间未提交的活动事务。有必要的话,可以断开这些连接并重新尝试截断事务日志和收缩日志文件。
sql截断日志
sql截断⽇志--收缩数据库DBCC SHRINKDATABASE(fas)--截断事务⽇志:BACKUP LOG fas WITH NO_LOG1.清空⽇志DUMP TRANSACTION 库名 WITH NO_LOG2.截断事务⽇志:BACKUP LOG 库名 WITH NO_LOG3.收缩数据库⽂件(如果不压缩,数据库的⽂件不会减⼩企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩⽂件--选择⽇志⽂件--在收缩⽅式⾥选择收缩⾄XXM,这⾥会给出⼀个允许收缩到的最⼩M数,直接输⼊这个数,确定就可以了--选择数据⽂件--在收缩⽅式⾥选择收缩⾄XXM,这⾥会给出⼀个允许收缩到的最⼩M数,直接输⼊这个数,确定就可以了也可以⽤SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(库名)--收缩指定数据⽂件,1是⽂件号,可以通过这个语句查询到:select * from sysfilesDBCC 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 FilesMicrosoft SQL ServerMSSQLData库名.mdf'5.为了以后能⾃动收缩,做如下设置:企业管理器--服务器--右键数据库--属性--选项--选择"⾃动收缩"--SQL语句设置⽅式:EXEC sp_dboption '库名', 'autoshrink', 'TRUE'6.如果想以后不让它⽇志增长得太⼤企业管理器--服务器--右键数据库--属性--事务⽇志--将⽂件增长限制为xM(x是你允许的最⼤数据⽂件⼤⼩)---------------------------------------------------------2008清理⽇志⽂件2008清理⽇志⽂件USE [PayT]GOALTER DATABASE PayT SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASEPayT SET RECOVERY SIMPLE --简单模式GOUSE PayV2GODBCC SHRINKFILE (N'PayT_Log' , 11, TRUNCATEONLY)GOUSE [PayT]GOALTER DATABASE PayT SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE PayT SET RECOVERY FULL --还原为完全模式GO。
SQLServer事务事务日志
SQLServer事务事务⽇志事务 (SQL Server)⼀、事务概念事务是⼀种机制、是⼀种操作序列,它包含了⼀组数据库操作命令,这组命令要么全部执⾏,要么全部不执⾏。
因此事务是⼀个不可分割的⼯作逻辑单元。
在数据库系统上执⾏并发操作时事务是作为最⼩的控制单元来使⽤的。
这特别适⽤于多⽤户同时操作的数据通信系统。
例如:订票、银⾏、保险公司以及证券交易系统等。
⼆、事务属性事务4⼤属性:1 原⼦性(Atomicity):事务是⼀个完整的操作。
2 ⼀致性(Consistency):当事务完成时,数据必须处于⼀致状态。
3 隔离性(Isolation):对数据进⾏修改的所有并发事务是彼此隔离的。
4 持久性(Durability):事务完成后,它对于系统的影响是永久性的。
三、创建事务T-SQL中管理事务的语句:1 开始事务: begin transaction2 提交事务:commit transaction3 回滚事务: rollback transaction事务分类:1 显式事务:⽤begin transaction明确指定事务的开始。
2 隐性事务:打开隐性事务:set implicit_transactions on,当以隐性事务模式操作时,SQL Servler将在提交或回滚事务后⾃动启动新事务。
⽆法描述事务的开始,只需要提交或回滚事务。
3 ⾃动提交事务:SQL Server的默认模式,它将每条单独的T-SQL语句视为⼀个事务。
如果成功执⾏,则⾃动提交,否则回滚。
事务⽇志 (SQL Server)Tue Oct 03 2017每个 SQL Server 数据库都有事务⽇志,⽤于记录所有事务以及每个事务所做的数据库修改。
事务⽇志是数据库的⼀个关键组件。
如果系统出现故障,你将需要依靠该⽇志将数据库恢复到⼀致的状态。
重要永远不要删除或移动此⽇志,除⾮你完全了解执⾏此操作的后果。
提⽰检查点会创建⼀些正常点,在数据库恢复期间将从这些正常点开始应⽤事务⽇志。
用Transact-SQL 命令压缩数据库
DBCC SHRINKDATABASE (database_name [, target_percent]
[, {NOTRUNCATE | TRUNCATEONLY}] )
各参数说明如下:
·target_percent 指定将数据库压缩后,未使用的空间占数据库大小的百分之几。如果指定的百分比过大,超过了压缩前未使用空间所占的比例,则数据库不会被压缩。并且压缩后的数据库不能比数据库初始设定的容量小。
2、dbcc shrinkfile(logfilename)
3、收縮數據庫
4、設定自動收縮。
二、分离数据库,删除日志文件,再附加,OK!右击数据库--所有任务--分离or 附加
三、1、backup log 庫名 WITH no_log,2、dbcc shrinkfile(logfilename),3、收縮數據庫
DBCC SHRINKFILE 命令压缩当前数据库中的文件。其语法如下:
DBCC SHRINKFILE ( {file_name | file_id }
{ [, target_size] |
[, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}] } )
各参数说明如下:
。
dbcc shrinkdatabase (mytest, 20)
运行结果如下:
DBCC execution completed. If DBCC printed error
messages, contact your system administrator.
(2) DBCC SHRINKFILE
SQL数据库日志已满解决方法
SQL数据库⽇志已满解决⽅法当前的解决⽅法是:把硬盘上的其他⽂件删除,以空出硬盘空间,将数据库的⽇志⽂件⼤⼩改成⽆限制,然后分离数据库,要确保分离成功,、然后把数据库⽇志⽂件删除(最好是先改名,以防万⼀)。
再附加数据库,这样会重建⽇志⽂件。
加回去之后,将数据库改成⾃动收缩,把⽇志⽂件改成按mb增长,增长最⼤设为⼀个固定的值,值的⼤⼩看数据处理情况,存在⼤指的update操作的话,应设为⼤⼀点。
:清空⽇志DUMP TRANSACTION 库名 WITH NO_LOG截断事务⽇志:BACKUP LOG 数据库名 WITH NO_LOG解决SQL数据库⽇志已满的问题1、右键数据库→属性→选项→故障还原模型→设为简单→确定;2、右键数据库→所有任务→收缩数据库→确定;3、右键数据库→属性→选项→故障还原模型→设为⼤容量⽇志记录→确定。
⼆、复杂⽅法1、清空⽇志DUMP TRANSACTION 库名 WITH NO_LOG2、截断事务⽇志BACKUP LOG 数据库名 WITH NO_LOG3、收缩数据库⽂件(如果不压缩,数据库的⽂件不会减⼩)企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩⽂件--选择⽇志⽂件--在收缩⽅式⾥选择收缩⾄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 中的⼀个⽂件附加到当前服务器。
SQLServer 2005&08镜像导致日志文件LDF过大的问题解决
镜像是一个很好的灾难恢复手段,配置简单,切换快速。
网上教如何配置的文章很多,这里介绍下如何处理LDF过大导致磁盘撑爆的情况。
首先要明确的是镜像不能清日志的, 镜像是的工作跟日志是有关联的。
常用的.清空日志DUMP TRANSACTION'db_name'WITH NO_LOG;和截断事务日志BACKUP LOG'db_name'WITH NO_LOG;都是无效的。
1建立多个日志文件,以免单个日志文件撑爆2根据日志的增长情况,经常备份日志BACKUP LOG DB_Name to disk='X:\DB_Name_Log.log' 3 收缩日志DBCC SHRINKFILE (Log_Name),但是这个几乎没用。
不过经过备份后,日志文件内部已经截断了,及时备份可以截断活动日志,让日志文件内标内记非活动的虚文件可重复使用. 查询日志的使用情况以及在被那些应用占用dbcc sqlperf(logspace)goDatabaseName Log Size (MB) Log Space Used (%) Status--------------------------------------------------------------------------------------------------------------DB_Name 77404.91 9.809758 0select name, recovery_model_desc, log_reuse_wait,log_reuse_wait_desc from sys.databasesname recovery_model_desc log_reuse_wait log_reuse_wait_desc--------------------------------------------------------------------------------------------------------------master SIMPLE 0 N OTHINGtempdb SIMPLE 1 CHECKPOINTmodel FULL 0 NOTHINGmsdb SIMPLE 1 CHECKPOINTDB_Name FULL 5 DATABASE_ MIRRORINGBackup FULL 4 ACTIVE_TRANSACTION--EOF--原文链接; /daitouliumang/item/9b978c30ebf4a7c0382ffacf sqlserver 2008设置了镜像,但日志文件增长过快,磁盘空间很快就用完了,如果要清空日志,必须把恢复模式改成简单,但设置了镜像就无法更改,只能是完整所以要对日志文件进行备份,每15分钟或1个小时备份一次然后再用下面语句清理日志,这里我只收缩到4G,DECLARE @I INT SET @I=1WHILE @I<3BEGINBACKUP LOG 库名 TO DISK = N'F:\X.bak'DBCC SHRINKFILE('库名_Log', 4096) 收缩文件到4GSET @I=@I+1END1、日志备份会清理日志中已经完成的部分,活动的以及还没有传递到镜像的日志将保留(没及时传送到镜像的就是活动的)2、在镜像环境下每15分钟或1小时做一个日志备份,事务日志及时备份可以截断活动日志,让日志文件内标记非活动的虚文件可重复使用3、镜像持续可用的话,多保留一次备份。
SQL Server 2005 日志文件过大处理
由于安装的时候没有计划好空间,默认装在系统盘,而且又没有做自动备份、截断事务日志等,很快LDF文件就达到十几G,或者几十G ,此时就不得不处理了。
备份和计划就不说了,现在就说下怎么把它先删除吧:1:先分离数据库2:为了保险,先不要删除,把LDF文件重命名下3:附件数据库。
4:OK。
以上可能遇到的问题:1:有用户连接,无法分离(勾选“断开所有连接”)2:附件数数据库的时候提示找不到LDF文件,不要慌,在附件的时候,把LDF的路径一项删除,然后点击"确定",这样就附件成功了,再去数据库数据目录下看看,LDF 只有几百K,这是自动生成的,附件成功。
3:OK,附件成功,打开应用,看访问是否正常(如果数据库还要连接网络中的其他机器,这个时候需要修复下IP,或者禁用再启用就可以了,因为有时候修复的窗口总是关不掉),正常之后就可以把那个大大的文件给删除了。
当然,最好的办法还是事前计划好,设置好,添加个作业计划,这样以后就会自动备份,收缩之类的,控制在一定大小范围内。
学习之后,其他的简单处理方法:1:清空日志DUMP TRANSACTION 库名WITH NO_LOG2:收缩日志企业管理器--右键点击你要收缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至**M,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了(建议在200~300M,以防止需要恢复使用)3: 删除LOG1:分离数据库企业管理器->服务器->数据库->右键->分离数据库(有连接情况下勾选“断开所有连接”)2:删除LOG文件3:附加数据库企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有几百K。
再将此数据库设置自动收缩4: 如果想以后不让它一直增长:企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database 数据库名modify file(name=逻辑文件名,maxsize=20)5.设置为自动收缩企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"。
截断数据库日志方法
有用的SQL语句关键是要在截断日志之前做一次完整备份。
做完整备份的时候,用参数WITH NO_LOG;然后执行收缩数据库的操作。
BACKUP DATABASE [ado] TO DISK= N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\ado0427inrunning.bak'WITH NOFORMAT, NOINIT,NAME= N'ado-完整数据库备份',SKIP,NOREWIND,NOUNLOAD,STATS= 10 ;BACKUP LOG [ado] TO DISK= N'C:\Program Files\Microsoft SQLServer\MSSQL.1\MSSQL\Backup\ado0427inrunning.bak'WITH NO_LOG;GOUSE [ado];GODBCC SHRINKDATABASE(N'ado');执行结果为:SQL Server 事务日志的收缩和截断SQL Server中事务日志的作用:持续记录数据库所有的事务和这些事务对数据库所做的修改;一旦数据库出现灾难事件,就需要事务日志来进行近期数据的恢复操作。
但是,在此条件下受益的同时也要付出相应的代价:在活动数据库中,事务日志会消耗大量的存储空间,假如你不做任何的干预,事务逻辑日志将会一直增长,直到塞满存储这些日志文件的所有可用空间。
下面我们来详细介绍SQL Server提供的两个用来平衡事务日志对空间巨大需求的操作:收缩事务日志和截断事务日志。
◆日志收缩截断日志虽然确实从日志文件中清除了事务,但它并不会真正的减小物理日志文件的大小。
SQL Server希望事务日志最终会扩展到其截断前的大小,所以截断不会释放已经分配给日志的硬盘空间。
如果你的日志在某一时刻人为地扩展到某个大小,却再也无法恢复到这个大小的话可就麻烦大了。
SQLSERVER数据库备份的三种策略及语句
SQLSERVER数据库备份的三种策略及语句1.全量数据备份备份整个数据库,恢复时恢复所有。
优点是简单,缺点是数据量太⼤,⾮常耗时全数据库备份因为容易实施,被许多系统优先采⽤。
在⼀天或⼀周中预定的时间进⾏全数据库备份使你不⽤动什么脑筋。
使⽤这种类型的备份带来的问题是⾮常缺乏灵活性,⽽且当数据库被冲掉后,你⾯临丢失⼤量数据的潜在威胁。
例如,假设你每天在午夜备份数据库。
如果服务器在晚上11点崩溃了,你将丢失前⾯23个⼩时对数据所做的全部修改。
对⼤多数系统来说,这是⽆法接受的。
对此规则,为数不多的例外如下:1.系统中所存的数据可以很容易地再创建。
这类服务器中⼀个很好的例⼦是报表服务器,其中所存的所有数据都由⼀个批处理过程装载的。
如果这个数据库被冲掉了,你只需要再运⾏⼀次这个批处理过程,所有数据就可以恢复了。
2.不经常修改的数据库。
⼀个例⼦是被收集存储在数据中⼼或数据仓库的历史数据。
通常,查询这些数据以判断趋势,但是这些数据极少被修改。
3.⼀个遥远的站点,那⾥很少或没有数据库管理员⽀持。
这种类型的站点常常依靠没受过⾜够培训的⼈来维持备份计划,并且他还从事其他⼯作。
通常最好保证实施的备份计划⾮常简单,不必让那些⽤户监视和维护它。
4.系统中所存数据的重要性很低。
⼀个很好的例⼦是开发⽤服务器。
在这些类型的服务器上,开发者通常装载⼀些旧的或假定的数据来测试应⽤程序。
这类数据库每天的备份是可接受的。
Sql语句:BACKUP DATABASE [wxh] TO DISK = N'C:\Program Files\Microsoft SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH NOFORMAT, NOINIT, NAME = N'wxh-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 102.增量数据备份(Differential Backups)所谓增量,就是以某个起始时间点的全量数据为基础,备份该时间点以后的数据。
SQLServer事务日志截断、回绕与收缩(转载)
SQLServer事务⽇志截断、回绕与收缩(转载)每个 SQL Server 数据库都具有事务⽇志,⽤于记录所有事务以及每个事务对数据库所做的修改。
必须定期截断事务⽇志以避免它被填满。
但是,⼀些因素可能延迟⽇志截断,因此监视⽇志⼤⼩很重要。
某些操作可以最⼩⽇志量进⾏记录以减少其对事务⽇志⼤⼩的影响。
事务⽇志是数据库的重要组件,如果系统出现故障,则可能需要使⽤事务⽇志将数据库恢复到⼀致状态。
删除或移动事务⽇志以前,必须完全了解此操作带来的后果。
事务⽇志⽀持以下操作:恢复个别的事务。
在 SQL Server 启动时恢复所有未完成的事务。
将还原的数据库、⽂件、⽂件组或页前滚⾄故障点。
⽀持事务复制。
⽀持⾼可⽤性和灾难恢复解决⽅案:AlwaysOn 可⽤性组、数据库镜像和⽇志传送。
事务⽇志截断⽇志截断将释放⽇志⽂件的空间,以便由事务⽇志重新使⽤。
⽇志截断主要⽤于阻⽌⽇志填充。
⽇志截断可从 SQL Server 数据库的逻辑事务⽇志中删除不活动的虚拟⽇志⽂件,释放逻辑⽇志中的空间以便物理事务⽇志重⽤这些空间。
如果事务⽇志从不截断,它最终将填满分配给物理⽇志⽂件的所有磁盘空间。
为了避免这个问题,除⾮由于某些原因延迟⽇志截断,否则将在以下事件后⾃动进⾏截断:1、简单恢复模式下,在检查点之后发⽣。
将数据库恢复模式配置为简单模式。
2、在完整恢复模式或⼤容量⽇志恢复模式下,如果⾃上⼀次备份后⽣成检查点,则在⽇志备份后进⾏截断(除⾮是仅复制⽇志备份)。
在备份数据库的时候可以选择进⾏⽇志备份,如图。
(注意⽇志备份的前提是已经进⾏过数据库的完整备份)。
注意下图的截断事物⽇志选项只有在进⾏事物⽇志备份的时候才可⽤,如果进⾏完整或差异备份,则不能选择该选项。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果从来没有从事务日志中删除日志记录,逻辑日志就会一直增长,直到填满容纳物理日志文件的磁盘上的所有可用空间。
在某个即时点,必须删除恢复或还原数据库时不再需要的旧日志记录,以便为新日志记录腾出空间。
删除这些日志记录以减小逻辑日志的大小的过程称为截断日志。
永远不能截断事务日志的活动部分。
日志的活动部分是在任何时间恢复数据库所需的日志部分,因此必须有回滚所有未完成的事务所需的日志映像。
这部分必须始终在数据库中,因为一旦服务器发生故障,在服务器重新启动时必须用它恢复数据库。
日志活动部分起点处的记录由最小恢复日志序号(MinLSN) 标识。
为数据库选择的恢复模式决定了在数据库内,必须在活动部分之前保留的事务日志量。
虽然MinLSN 之前的日志记录对恢复活动事务没有作用,但在使用日志备份将数据库还原到故障点时,必须用这些记录前滚修改。
如果由于某种原因丢失了数据库,则可以通过还原上次的数据库备份,然后还原自该数据库备份后的每个日志备份来恢复数据。
这意味着这些日志备份必须包含自数据库备份后所写入的每个日志记录。
当维护事务日志备份序列时,日志记录直到写入日志备份时才能被截断。
MinLSN 之前的日志记录只用于维护事务日志备份序列。
∙在简单恢复模式中,不维护事务日志序列。
MinLSN 之前的所有日志记录可以随时被截断,但在处理BACKUP 语句时除外。
NO_LOG 和
TRUNCATE_ONLY 是只对使用简单恢复模式的数据库有效的BACKUP
LOG 选项。
说明tempdb数据库始终使用简单恢复模式,不能切换到其它恢复模式。
日志截断始终发生在tempdb中的检查点上。
∙在完全恢复模式和有日志记录的大容量恢复模式中,维护事务日志备份序列。
MinLSN 之前的逻辑日志部分直到复制到某个日志备份时才能被截断。
日志截断在下列情况下发生:
∙执行完BACKUP LOG 语句时。
∙在每次处理检查点时(如果数据库使用的是简单恢复模式)。
这包括CHECKPOINT 语句所产生的显式检查点和系统生成的隐式检查点。
例外情
况是如果检查点发生在BACKUP 语句仍活动时,则不截断日志。
有关自动
检查点间隔的更多信息,请参见检查点和日志的活动部分。
事务日志在内部分成若干称为虚拟日志文件的部分。
虚拟日志文件是截断的单元。
当截断事务日志时,删除包含MinLSN 的虚拟日志文件头之前的所有日志记录。
有关虚拟日志文件的更多信息,请参见事务日志物理构架。
因此,按下面任一方式控制事务日志的大小:
∙在维护日志备份序列时,调度BACKUP LOG 语句按间隔发生,以使事务日志不致增长到超过预期的大小。
∙当不维护日志备份序列时,指定简单恢复模式。
下图显示一个有四个虚拟日志的事务日志。
创建数据库后没有截断过日志。
逻辑日志从第一个虚拟日志的始端开始,而且从未使用过第四个虚拟日志中超过逻辑文件末端的部分。
下图说明日志截断后的样子。
MinLSN 记录所在的虚拟日志始端之前的行被截断。
截断不减小物理日志文件的大小,但减小逻辑日志文件的大小。
有关收缩物理日志文件大小的更多信息,请参见"收缩事务日志"。
摘自:ms sqlserver online book。