SQL Server 的事务日志意外增大或充满的处理方法
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中的一个文件附加到当前服务器。
数据库的事务日志已满

数据库的事务日志已满。
若要查明无法重用日志中的空间的原因,请参阅sys.databases 中的log_reuse_wait_desc 列一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.1、清空日志DBCC SHRINKFILE(库名_log,0)DUMP TRANSACTION 库名WITH NO_LOG2、截断事务日志:如果出现“未能在sysfiles 中找到文件库名_log'。
DBCC 执行完毕。
如果DBCC 输出了错误信息,请与系统管理员联系。
”则使用这句SQL操作BACKUP LOG 库名WITH NO_LOGDBCC SHRINKFILE(2,0)3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件a、选择日志文件--收缩文件至,这里会给出一个允许收缩到的最小M数,确定就可以了b、选择数据文件--收缩文件至,这里会给出一个允许收缩到的最小M数,,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDA TABASE(库名)--收缩指定数据文件,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 Files\Microsoft SQL Server\MSSQL\Data\库名.mdf' 5.为了以后能自动收缩,做如下设置:企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:EXEC sp_dboption '库名','autoshrink','TRUE'6.如果想以后不让它日志增长得太大企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database 库名modify file(name=逻辑文件名,maxsize=20)。
日志已满的解决办法

KIS专业版提示“日志已满”的解决办法错误提示:1》在进行帐套备份的时候提示以下错误:2》由于业务系统已结帐到12月份,在进行单据录入的时候提示以下错误:点击确定后出现如下提示:后弹出单据录入界面为不可录入状态,点新增后仍然继续弹出错误提示。
问题原因:问题的原因是由于将账套实体的事务日志的增长已超过当前的限制太小所致。
解决办法:第一步,将“最大文件大小”设置为“文件增长不受限制”。
步骤:进入SQL SERVER企业管理器-》Micro SQL Servers-》SQL Server组-》(local) Windows NT-》数据库-》帐套号-》属性-》事务日志-》最大文件大小选择“文件增长不受限制”;第二步,将问题账套实体进行数据分离。
步骤:进入SQL SERVER企业管理器进行分离。
SQL SERVER企业管理器-》Micro SQL Servers-》SQL Server组-》(local) Windows NT-》数据库-》帐套号-》所有任务-》分离数据库。
单击确定按钮,提示分离数据库成功。
第三步,删除问题账套实体的数据库日志文件。
步骤:在SQL SERVER的安装根目录下的DATA文件夹下将问题帐套的日志文件AIS1027_log.ldf删除。
第四步,将问题帐套数据实体重新附加回SQL数据库中。
步骤:进入SQL SERVER企业管理器进行附加。
SQL SERVER企业管理器-》Micro SQL Servers-》SQL Server组-》(local) Windows NT-》数据库-》所有任务-》附加数据库。
附加账套实体AIS1027_data.mdf,这时可以看出AIS1027_log.ldf前打上叉,附加成功后可以看到自动新增的AIS1027_log.ldf文件,约500K大小。
第四步,将问题帐套数据实体重新注册。
这时的帐套实体已被成功的附加回SQL数据库中,但是此时还是不能被专业版打开。
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提供⾃动缩减⽇志的脚本写法),添加到任务计划中,定时执⾏!可以节省很多磁盘空间!。
SqlServer数据库提示“tempdb”的日志已满问题如何解决

SqlServer数据库提示“tempdb”的日志已满问题如何
解决
本文主要讲述了笔者在执行sql语句的过程中,遇到SqlServer数据库提示tempdb”的日志已满问题。
请备份该数据库的事务日志以释放一些日志空间”的解决过程,希望对大家有所帮助。
执行sql 语句,中间没有用到临时表
提示服务器: 消息9002,级别17,状态2,行1
数据库‘tempdb’ 的日志已满。
请备份该数据库的事务日志以释放一些日志空间。
网上找了下解决方案,大体是扩大临时库的日志文件的大小解决的
解决过程:
查看了下数据库的属性,是自动增长,不指定文件大小上限。
在网上Google了很久,试了些方法都不行;数据库所在磁盘还有很大的可用空间,试着下重药了。
直接把tempdb的数据文件和日志文件的大小改为3000M,。
关于数据库事务日志文件过大的解决方案(sql2000)

现象描述:
系统中心瑞星数据库包括数据文件以及对应的事务日志文件,如下图所示:
事务日志文件是SQLsever生成的,主要记录数据文件的操作日志,该文件不断增长不是瑞星程序导致的。
解决方案:
第一步:通过企业管理器分离数据库,如下图所示:
选择清除,中断所有对数据库的操作:
第二步:进入数据库文件所在的目录,删除过大的事务日志文件RavNetDB_log.LDF。
第三步:通过企业管理器,对数据库进行附加,如图所示:
浏览瑞星的数据库文件RavNetDB.mdf,进行附加,如图所示:
由于log日志文件被删除,因此附加数据库时会找不到该文件,选择“是”将创建新的事务日志文件,如图所示:
选择“是”,完成数据库的附件。
新的事务日志文件生成,大小为504K,减少了磁盘空间的占用,如图所示
最后需要重启Rav net alert服务和RNreport服务,打开日志管理工具,可以查询日志。
解决完LOG文件过大的问题后,还可以通过企业管理器对事务日志文件进行设置,避免该文件不断增大产生问题。
操作方法:
第一步:在数据库上鼠标右键选择属性,如图所示:
第二步:切换到事务日志,可对文件大小进行限制或禁止文件自动增长,如图所示:。
SQL日志文件太大,清理方法
--收缩数据库
DBCC SHRINKDATABASE(客户资料)
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE(1)
4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)
5.为了以后能自动收缩,做如下设置:
企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"
--SQL语句设置方式:
EXEC sp_dboption '数据库名', 'autoshrink', 'TRUE
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
07. exec('DBCC SHRINKDATABASE(['+@DBName+'])')
08.End
view plaincopy to clipboardprint?
01.--删除数据库日志
02.ALTER PROCEDURE [dbo].[NS_ShrinkLog]
03.@DBName nchar(50)
04.AS
05.Begin
数据库日志满的删除方法
数据库日志满的删除方法解决SQL数据库日志已满的问题2009年03月21日星期六上午 11:53一、简单方法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 中的一个文件附加到当前服务器。
a.分离EXEC sp_detach_db @dbname = 'pubs'b.删除日志文件c.再附加EXEC sp_attach_single_file_db @dbname = 'pubs',@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'5、为了以后能自动收缩,做如下设置企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:EXEC sp_dboption '数据库名', 'autoshrink', 'TRUE'6、如果想以后不让它日志增长得太大企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database 数据库名modify file(name=逻辑文件名,maxsize=20)特别注意:请按步骤进行,未进行前面的步骤,请不要做后面的步骤,否则可能损坏你的数据库。
如何防止SQLServer数据库的事务日志异常增长数据库教程-电脑资料
如何防止SQLServer数据库的事务日志异常增长数据库教程-电脑资料server|数据|数据库当事务日志扩展到无法接受的限度时您必须执行的步骤,。
事务日志的扩展会导致 Microsoft SQL Server 数据库无法使用。
在 SQL Server 2000 中,每个数据库都至少包含一个数据文件和一个事务日志文件。
SQL Server 2000 在该数据文件中以物理方式存储数据。
事务日志文件存储您对 SQL Server 数据库执行的所有修改的详细信息,以及执行每个修改的事务的详细信息。
由于事务完整性被视为 SQL Server 的一个基本而固有的特点,因此不能在 SQL Server 2000 中关闭对事务详细信息的记录。
在逻辑意义上,事务日志文件被划分为更小的段,这些段被称为虚拟日志文件。
在 SQL Server 2000 中,您可以将事务日志文件配置为根据需要扩展。
用户可以控制事务日志的扩展,也可以将其配置为使用所有可用的磁盘空间。
SQL Server 对事务日志文件大小所做的任何修改(如截断或增长事务日志文件)都是以虚拟日志文件为单位执行的。
如果与 SQL Server 数据库相对应的事务日志文件被充满,而且事务日志文件选项被设置为自动增长,则事务日志文件将以虚拟日志文件为单位增长。
有时,事务日志文件可能变得非常大,以致没有足够的磁盘空间。
如果事务日志文件不断增长,致使日志文件占用了所有可用的磁盘空间而无法继续扩展,则将无法再对数据库执行任何数据修改操作。
不仅如此,由于事务日志缺乏扩展空间,SQL Server 可能会将您的数据库标记为可疑数据库。
减小事务日志的大小如果事务日志已经增长到无法接受的限度,而您希望从这种状况中恢复,则必须减小事务日志的大小。
为此,必须截断事务日志中非活动的事务并收缩事务日志文件。
注意:事务日志对于维护数据库的事务完整性非常重要。
因此,即使您为数据库和事务日志制作了备份,也不得删除事务日志文件。
SQL服务器的日志增长过快
SQL服务器的日志增长过快问题:在C盘空间不足的情况下, C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG 下的你每天增大,大量的占用C盘的空间。
在APACS OS 版本 6.1 中,ErrorLog 文件保存在c:/Program Files/Microsoft SQL Server/MSSQL$WINCC/LOG 文件夹中。
在APACS OS 版本7.0 中,ErrorLog 文件保存在c:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/LOG 文件夹中。
原因分析:如果很少重起mssqlserver服务,那么服务器的日志会增长得很快(每天通过重启机器启动SQL服务,好像不起作用,目前没找到原因),而且打开和查看日志的速度也会很慢。
默认情况下,SQL Server 保存7 个ErrorLog 文件,名为:ErrorLogErrorLog.1ErrorLog.2ErrorLog.3ErrorLog.4ErrorLog.5ErrorLog.6ErrorLog 文件包含最新信息;ErrorLog.6 文件包含最老的信息。
每次重启动SQL Server 时,这些日志文件都如下循环:删除ErrorLog.6 文件中的所有数据,并创建一个新的ErrorLog 文件。
上个ErrorLog 文件中的所有数据被写入到ErrorLog.1 文件中。
上个ErrorLog.1 文件中的所有数据被写入到ErrorLog.2 文件中。
上个ErrorLog.2 文件中的所有数据被写入到ErrorLog.3 文件中。
上个ErrorLog.3 文件中的所有数据被写入到ErrorLog.4 文件中。
上个ErrorLog.4 文件中的所有数据被写入到ErrorLog.5 文件中。
上个ErrorLog.5 文件中的所有数据被写入到ErrorLog.6 文件中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server 的事务日志意外增大或充满的处理方法
事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf。
在SQL Server 7.0 和SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展。
一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发。
然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满。
通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,您将收到如下错误消息:
Error:9002, Severity:17, State:2
The log file for database '%.*ls' is full.
除了出现此错误消息之外,SQL Server 还可能因为缺少事务日志扩展空间而将数据库标记为SUSPECT。
有关如何从此情形中恢复的其他信息,请参见SQL Server 联机帮助中的“磁盘空间不足”主题。
另外,事务日志扩展可能导致下列情形:
·非常大的事务日志文件。
·事务可能会失败并可能开始回滚。
·事务可能会用很长时间才能完成。
·可能发生性能问题。
·可能发生阻塞现象。
原因
事务日志扩展可能由于以下原因或情形而发生:
·未提交的事务
·非常大的事务
·操作:DBCC DBREINDEX 和CREATE INDEX
·在从事务日志备份还原时
·客户端应用程序不处理所有结果
·查询在事务日志完成扩展之前超时,您收到假的“Log Full”错误消息
·未复制的事务
解决方法
日志文件满而造成SQL数据库无法写入文件时,可用两种方法:
一种方法:清空日志。
1.打开查询分析器,输入命令
DUMP TRANSACTION 数据库名WITH NO_LOG
2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小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
Auto shrink
定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint
选项设为True 时才能进行。
注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。