SQL Server 的事务日志意外增大或充满的处理方法

合集下载

sqlserver日志已满处理方法

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事务日志已满的几种解决方案

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”的日志已满问题如何解决

SqlServer数据库提示“tempdb”的日志已满问题如何
解决
本文主要讲述了笔者在执行sql语句的过程中,遇到SqlServer数据库提示tempdb”的日志已满问题。

请备份该数据库的事务日志以释放一些日志空间”的解决过程,希望对大家有所帮助。

 执行sql 语句,中间没有用到临时表
 提示服务器: 消息9002,级别17,状态2,行1
 数据库‘tempdb’ 的日志已满。

请备份该数据库的事务日志以释放一些日志空间。

 网上找了下解决方案,大体是扩大临时库的日志文件的大小解决的
 解决过程:
 查看了下数据库的属性,是自动增长,不指定文件大小上限。

 在网上Google了很久,试了些方法都不行;数据库所在磁盘还有很大的可用空间,试着下重药了。

 直接把tempdb的数据文件和日志文件的大小改为3000M,。

关于数据库事务日志文件过大的解决方案(sql2000)

关于数据库事务日志文件过大的解决方案(sql2000)

现象描述:
系统中心瑞星数据库包括数据文件以及对应的事务日志文件,如下图所示:
事务日志文件是SQLsever生成的,主要记录数据文件的操作日志,该文件不断增长不是瑞星程序导致的。

解决方案:
第一步:通过企业管理器分离数据库,如下图所示:
选择清除,中断所有对数据库的操作:
第二步:进入数据库文件所在的目录,删除过大的事务日志文件RavNetDB_log.LDF。

第三步:通过企业管理器,对数据库进行附加,如图所示:
浏览瑞星的数据库文件RavNetDB.mdf,进行附加,如图所示:
由于log日志文件被删除,因此附加数据库时会找不到该文件,选择“是”将创建新的事务日志文件,如图所示:
选择“是”,完成数据库的附件。

新的事务日志文件生成,大小为504K,减少了磁盘空间的占用,如图所示
最后需要重启Rav net alert服务和RNreport服务,打开日志管理工具,可以查询日志。

解决完LOG文件过大的问题后,还可以通过企业管理器对事务日志文件进行设置,避免该文件不断增大产生问题。

操作方法:
第一步:在数据库上鼠标右键选择属性,如图所示:
第二步:切换到事务日志,可对文件大小进行限制或禁止文件自动增长,如图所示:。

SQL日志文件太大,清理方法

SQL日志文件太大,清理方法
也可以用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数据库的事务日志异常增长数据库教程-电脑资料

如何防止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服务器的日志增长过快

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 文件中。

SQL Server 2000数据库的事务日志文件过大,如何将其缩小?

SQL Server 2000数据库的事务日志文件过大,如何将其缩小?

关于这两个命令的具体使用方法,可以参考SQL Server 2000联机丛书中的相应主题。另外,也可在SQL Server企业管理器中执行数据库收缩,同样是调用的以上两个命令,效果类似。
在使用以上命令收缩日志文件的时候需要注意,已写入数据库但未被截断的事务日志记录是不会被收缩的,因为虽然这部分日志记录的信息已经写入数据库文件,但在使用事务日志备份进行数据库还原的时候,还将用到其中的信息。
为避免事务日志文件增长过快以致用尽所有磁盘空间的现象发生,一种办法是将数据库设为使用简单恢复模型,这样可以使SQL Server周期性的自动截断事务日志的非活动部分,并回收其占用的空间供以后写入事务日志记录使用。但这将使数据库无法利用事务日志备份还原到即时点,降低了数据库的可靠性,因此一般不应用于生产型数据库。
如果当前数据库的事务日志文件过大,必须对其进行收缩的话,建议参照以下步骤:
1、建议首先备份数据库(但不是必需的):
BACKUP DATABASE database_name TO backup_device
2、备份事务日志:
BACKUP LOG database_name TO backup_device
对于使用简单恢复模型的数据库,事务日志会在每次处理检查点(CheckPoint)时自动被截断。
对于使用完全恢复模型或大容量日志记录恢复模型的数据库,事务日志只有在执行日志备份(BACKUP LOG)时才会被截断,这时事务日志中记录的信息被写入事务日志备份文件,而它们所占用的这部分空间被标记为可用(即被截断)。
4、如果日志文件仍然较大的话,可以尝试重复执行一次BACKUP LOG WITH NO_LOG和DBCC SHRINKFILE命令。

sql数据库日志过大

sql数据库日志过大

数据库恢复模式为完整模式的情况下做日志缩小处理:use masterDBCC SQLPERF(LOGSPACE)GOSELECT name,recovery_model_desc,log_reuse_wait,log_reuse_wait_descFROM sys.databases where name=’DBname ‘GO查看log_reuse_wait_desc,如果为LOG_BACKUP,则是因为数据库未做过事务日志备份,那么做一下事务日志备份即可,因为事务日志未产生截断,所以不能进行收缩处理。

做事务日志备份就可以产生截断了。

做完事务日志的备份后,再执行上述语句,查看log_reuse_wait_desc,则此时为nothing.那么就可以直接做数据库收缩操作了。

收缩后,按需要指定事务日志的大小,并据需要做数据库的事务日志备份。

事务日志(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分。

由于它并不像数据库中的schema那样活跃,因此很少有人关注事务日志。

事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。

对于任何每一个事务过程,事务日志都有非常全面的记录,根据这些记录可以将数据文件恢复成事务前的状态。

从事务动作开始,事务日志就处于记录状态,事务过程中对数据库的任何操作都在记录范围,直到用户点击提交或后退后才结束记录。

每个数据库都拥有至少一个事务日志以及一个数据文件。

出于性能上的考虑,SQL Server将用户的改动存入缓存中,这些改变会立即写入事务日志,但不会立即写入数据文件。

事务日志会通过一个标记点来确定某个事务是否已将缓存中的数据写入数据文件。

当SQL Server重启后,它会查看日志中最新的标记点,并将这个标记点后面的事务记录抹去,因为这些事务记录并没有真正的将缓存中的数据写入数据文件。

这可以防止那些中断的事务修改数据文件。

事务日志被填满的原因是什么?数据库教程-电脑资料

事务日志被填满的原因是什么?数据库教程-电脑资料

事务日志被填满的原因是什么?数据库教程-电脑资料
SQL Server事务日志可能会被填满,这会阻止之后的数据库操作,包括UPDATE, DELETE, INSERT 和CHECKPOINT,。

事务日志填满会导致1105错误:
Can't allocate space for object syslogs in database dbname because
the logsegment is full。

If you ran out of space in syslogs,dump
the transaction log,
电脑资料
《事务日志被填满的原因是什么?数据库教程》(https://www.)。

Otherwise use ALTER DATABASE or
sp_extendsegment to increase the size of the segment。

这种现象可能出现于任何一个数据库中,包括Master和TempDB。

一些难以预见的因素可能消耗日志空间。

例如:
一个大型事务,尤其像批量数据更新、插入或删除。

一个未提交的事务。

检查点处理程序截除时所需的带宽过大。

截除时超过阈值
上述各种条件互相作用的结果。

用于发布的标记事务没有被日志读取程序读走。

sql数据库日志已满的处理方式

sql数据库日志已满的处理方式

DBCC SHRINKDATABASE收缩指定数据库中的数据文件大小。

语法DBCC SHRINKDATABASE(database_name [, target_percent ][ ,{NOTRUNCATE |TRUNCATEONLY }])参数database_name是要收缩的数据库名称.数据库名称必须符合标识符的规则。

有关更多信息,请参见使用标识符。

target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比.NOTRUNCATE导致在数据库文件中保留所释放的文件空间。

如果未指定,将所释放的文件空间释放给操作系统。

TRUNCATEONLY导致将数据文件中的任何未使用的空间释放给操作系统,并将文件收缩到上一次所分配的大小,从而减少文件大小,而不移动任何数据.不试图重新定位未分配页的行。

使用TRUNCATEONLY 时,忽略target_percentis。

注释Microsoft® SQL Server™可收缩:特定数据库的所有数据和日志文件。

执行DBCC SHRINKDATABASE。

一次一个特定数据库中的数据或日志文件.执行DBCC SHRINKFILE.DBCC SHRINKDATABASE 以每个文件为单位对数据文件进行收缩。

然而,DBCC SHRINKDATABASE 在对日志文件进行收缩时,看起来好像所有的日志文件都存在于一个连续的日志池中.假设名为mydb 的数据库有两个数据文件和两个日志文件。

这些数据文件和日志文件大小都为10 MB。

第一个数据文件包含6 MB 数据。

对于每个文件,SQL Server 计算目标大小,即要收缩文件到的大小.当用target_percent 指定DBCC SHRINKDATABASE 时,SQL Server 计算的目标大小是收缩后文件中的target_percent 可用空间大小.例如,如果指定按target_percent 为25 收缩mydb。

SQL Server 2005 日志文件过大处理

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.设置为自动收缩企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"。

SQLSERVER日志已满的处理方法

SQLSERVER日志已满的处理方法

SQL SERVER 日志已满的处理方法事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf。

在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展。

一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发。

然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满。

通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,您将收到如下错误消息:Error:9002, Severity:17, State:2The log file for database ’%.*ls’ is full.除了出现此错误消息之外,SQL Server 还可能因为缺少事务日志扩展空间而将数据库标记为 SUSPECT。

有关如何从此情形中恢复的其他信息,请参见 SQL Server 联机帮助中的“磁盘空间不足”主题。

另外,事务日志扩展可能导致下列情形:· 非常大的事务日志文件。

· 事务可能会失败并可能开始回滚。

· 事务可能会用很长时间才能完成。

· 可能发生性能问题。

· 可能发生阻塞现象。

原因事务日志扩展可能由于以下原因或情形而发生:· 未提交的事务· 非常大的事务· 操作:DBCC DBREINDEX 和 CREATE INDEX· 在从事务日志备份还原时· 客户端应用程序不处理所有结果· 查询在事务日志完成扩展之前超时,您收到假的“Log Full”错误消息· 未复制的事务解决方法日志文件满而造成SQL数据库无法写入文件时,可用两种方法:一种方法:清空日志。

1.打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

SQL作业处理SQL日志过大

SQL作业处理SQL日志过大

通过使用SQL作业,处理SQL日志过大
因为SQL日志老是快速增长,甚至超数据库本身,一天有一个不小心居然到十几个G的大小。

网上查了很多方法,没有一劳永逸的。

后发现通过使用SQL作业,可以理想处理。

大家跟着我来做一下:
首先查看一下SQL的日志是否过大:选中你的数据库并右击,点属性
点击“事务日志”看“分配的空间(MB)”下的数值,一般百兆以内就不用麻烦了,也可根据自己的情况来定你是不是需要做这个作业。

确定要做,看图继续;
选中你的数据库,点工具-—作业调试
下一步
根据你喜欢或熟悉的语言选一种,我选“Transact-SQL命令”并点下一步
这里再确认下你要操作的数据库名,不对的可以重选,在下面的脚本框内输入以下内容:DUMP TRANSACTION 数据库名WITH NO_LOG
BACKUP LOG 数据库名WITH NO_LOG
DBCC SHRINKDATABASE (数据库名)
再点分析,看是否成功
成功了继续,不成功检查语句是不是有错。

这里设置执行的时间,因为我想一劳永逸,所以我选“反复运行”并点“调度”设置运行时间
因为不敢保证此操作完美无误,所以请大家把执行时间放在数据库备份时间之后(备份的你再找资料)
下一步
给作业名命一个名称,并完成
这样就好了,再也不用担心日志突然变大了。

当然,如果效果不满意,可以修改
点“管理”――“作业”查看你做好的作业
双击你的作业名对其操作
呵呵,点步骤修改操作内容,点调度修改操作时间。

SQL数据库日志文件过大解决办法

SQL数据库日志文件过大解决办法

SQL数据库日志文件过大解决办法方法操作方式如下:打开查询分析器,选择数据库,在查询对话框中输入BACKUP LOG 数据库名 WITH NO_LOG --截断事务日志GODBCC SHRINKFILE(日志文件的文件名) --收缩日志文件,文件名就是在企业管理器里面找到的那个GO原理:事务日志里面记录了用户对数据库的所有操作,其中有一部是保留的,用作数据库故障恢复,其它都是可删除的,载断事务日志就是将可删除的那部份日志标记为不活动日志(但并没有删除),收缩日志文件就是把日志中不活动的日志清除。

另外,由于日志文件中的数据块是每块100M,所以如果日志文件小于100M,收缩后看文件并不会缩少(相关内容可查询sql server 帮助文档中“收缩事务日志”部份)用'管理'->'数据库维护计划'来做选择数据库->从数据库文件中删除未使用的空间当数据库的大小超过n MB时收缩数据库保留10% 的数据空间作为可用空间,这样可以调度执行,不需要手工操作。

在维护日志备份序列时,调度BACKUPLOG语句按间隔发生,以使事务日志不致增长到超过预期的大小。

*当不维护日志备份序列时,指定简单恢复模式。

详情请参考 MSSQLServer2000联机丛书:目录--> SQLServer构架-->数据库构架-->物理数据库构架-->事务日志构架-->收缩事务日志目录--> SQLServer构架-->数据1:删除LOG文件(1)分离数据库企业管理器->服务器->数据库->右键->分离数据库(2)删除LOG文件(3)附加数据库企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有500多K再将此数据库设置自动收缩或用代码:下面的示例分离 pubs,然后将 pubs中的一个文件附加到当前服务器。

EXEC sp_detach_db @dbname = 'pubs'EXEC sp_attach_single_file_db @dbname = 'pubs',@physname='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\pubs.mdf'2:清空日志DUMP TRANSACTION 库名 WITH NO_LOG企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了DUMP TRANSACTION 库名 WITH NO_LOG或截断日志:backuplog 数据库 withno_log3:清除日志方法1、--在查询分析器,选中所要清理日志的数据库,执行如下SQLbackuplog 数据库名 withno_logDBCC SHRINKFILE(日志文件名或日志文件ID,要缩小的目标大小)在当前数据库下select fileid,groupid,name from sysfiles where groupid=0----------------------------------------得到以下结果fileid groupid name20 test_log以上结果,fileid为日志文件ID,name为test_log你可以backup log test with no_logdbcc shrinkfile (2,2)或者backup log test with no_logdbcc shrinkfile('test_log',2)如果以后,不想要它变大,在数据库上点右键->属性->选项->故障恢复模型选择简单模型就可以了!或用SQL语句alterdatabase 数据库名setrecoverysimple方法2、SQLSERVER企业管理器-》SQL SERVER组-》服务器-》数据库-》选中数据库实体-》右键-》所有任务-》分离数据库,然后到数据库所在物理路径下删除.ldf文件,再数据库右键-》所有任务-》附加数据库,即可,会重新生成日志文件。

SQL数据库日志已满,或者日志很大问题解决

SQL数据库日志已满,或者日志很大问题解决

SQL数据库日志已满,或者日志很大,怎么办?先提供一种复杂的方法压缩日志及数据库文件如下: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.为了最大化的缩小日志文件(如果是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.mdf'5.为了以后能自动收缩,做如下设置:企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:E X E C sp_dboption '数据库名', 'autoshrink', 'TRUE'6.如果想以后不让它日志增长得太大企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)特别注意:请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.另外提供一种更简单的方法,本人屡试不爽,建议大家使用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 时才能进行。

注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。

相关文档
最新文档