解决SQL数据库日志已满的问题
SQL日志文件太大清理方法
SQL日志文件太大清理方法当SQL日志文件太大时,清理方法包括:备份、压缩、归档和删除等步骤。
下面是一些具体的方法和步骤:1.备份日志文件:首先,需要确保已经备份了当前的SQL日志文件。
这是因为,在清理之前,需要先保存原始的日志文件,以防止出现意外情况。
可以使用数据库管理工具或命令行工具进行备份。
2.压缩日志文件:为了减小日志文件的大小,可以使用压缩工具将其进行压缩。
压缩后的日志文件可以占用更少的磁盘空间,同时也更容易存储和传输。
在压缩之前,要确保不再需要对日志进行任何操作,以免丢失任何重要信息。
3.归档日志文件:归档是将日志文件从当前位置移到另一个位置的过程。
通过归档,可以将旧的日志文件移动到一个备份或存档目录中,以便以后查看或还原。
这样,可以释放当前的日志文件空间,并保留原始的日志记录。
具体的归档方法可以根据数据库管理系统和应用程序的要求进行选择。
4.删除日志文件:一旦已经完成了备份、压缩和归档操作,就可以考虑删除较旧的日志文件。
删除日志文件可以释放磁盘空间,提高系统性能,并且可以避免日志文件过大对系统运行造成负面影响。
但是,在删除日志文件之前,要确保已经备份和归档了这些文件,以防止丢失重要的数据。
需要注意的是,清理SQL日志文件需要谨慎操作,以免出现数据丢失或其他不可预料的问题。
因此,在进行清理操作之前,建议先备份和归档日志文件,以便以后查看或还原。
此外,要保持日志文件的合理大小,可以定期进行备份和归档操作,避免日志文件不断增长而导致系统性能下降。
在执行清理操作时,最好在非繁忙的时间段进行,以减少对系统运行的干扰。
清理 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中已满事务日志原因的检测对于SQL Server数据库管理员来讲,已满事务日志是一个琐碎的,但又很常见的问题。
它能引发事务的提前终止,甚至通过阻止所有事务的引入,从而引起系统的崩溃。
对于数据库管理员来说,关键是理解将要发生的情况,以便他们可以追踪引起问题的原因。
事务日志填充方式以下是一些可能引起事务日志填满的原因:填满的,细节的,或者没有在已满恢复模式下进行的日志备份,都会引起日志逐渐地填充。
进程中有活动的备份(备份被作为事务一样来处理),它会填充部分日志,而事务将填充剩余部分。
长时间运行的活动事务,例如从来都不会产生提交的SPID,以及暂停或高速运行数据库镜像都会引发延迟。
前者会引起事务不发送,如果在发送事务到镜像服务器之后的较长时间内,才进行高速运行,则后者才会发生。
对于事务复制,如果复制延迟或失败,事务日志将不会被清除,因为除非事务与日志都提交并发送至分布式数据库,否则事务都不能被清除。
如果进程中有一个数据库快照,当它创建时,所有的事务都堆积在它后边。
简单的响应方法需要解决已满事务日志的问题时,你可以从以下几个选择入手:1、你可以执行备份来消减日志。
事务日志备份是最快的,但也可能是最慢的,这取决于系统性能以及日志的大小。
通常不推荐填满的或细节的备份,这取决于在大小合适的系统中完成这些备份所需的时间。
2、你可以向数据库中添加额外的事务日志文件并执行以上备份方法中的一种。
当你在进行必要的备份时,额外的事务日志文件的添加可以为你赢得额外的时间。
当然,它也可在稍后被删除。
3、你可以将数据库的模式切换到简单恢复模式,它将自动清除日志。
但要记住,你将会丢失自最近一次已满的/细节的事务日志备份之前的事务历史。
4、正在填充日志的活动事务可以连同一些系统进程被终止,以至不会被重新执行并填充日志。
当问题源被追踪到,它将提供一些缓解,但它不应该被考虑为一种解决方案。
5、在查找系统缓慢的原因时,数据库镜像/复制可以关闭。
日志已满的解决办法
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数据库提示“tempdb”的日志已满问题如何解决
SqlServer数据库提示“tempdb”的日志已满问题如何
解决
本文主要讲述了笔者在执行sql语句的过程中,遇到SqlServer数据库提示tempdb”的日志已满问题。
请备份该数据库的事务日志以释放一些日志空间”的解决过程,希望对大家有所帮助。
执行sql 语句,中间没有用到临时表
提示服务器: 消息9002,级别17,状态2,行1
数据库‘tempdb’ 的日志已满。
请备份该数据库的事务日志以释放一些日志空间。
网上找了下解决方案,大体是扩大临时库的日志文件的大小解决的
解决过程:
查看了下数据库的属性,是自动增长,不指定文件大小上限。
在网上Google了很久,试了些方法都不行;数据库所在磁盘还有很大的可用空间,试着下重药了。
直接把tempdb的数据文件和日志文件的大小改为3000M,。
数据库的事务日志已满
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
a、选择日志文件--收缩文件至,这里会给出一个允许收缩到的最小M数,确定就可以了
b、选择数据文件--收缩文件至,这里会给出一个允许收缩到的最小M数,,确定就可以了
也可以用SL语句来完成
--收缩数据库
如果出现“未能在 sysfiles 中找到文件 库名_log'。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。”
则使用这句操作
BACKUP LOG 库名 WITH NO_LOG
DBCC SHRINKFILE(2,0)
3.收缩数据库文件(如果不压缩,数据库的文件不会减小
第4步不安全,有可能损坏数据库或丢失数据
第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.
1、清空日志
DBCC SHRINKFILE(库名_log,0)
DUMP TRANSACTION 库名 WITH NO_LOG
2、截断事务日志:
DBCC SHRINKDATABASE(库名)
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:
SQL数据库日记文件满造成数据库不能保存数据的处理方法
SQL Server2000数据库收缩、分离与附加当日记文件储存满以后,会出现SQL数据库数据无法保存现象。
这就造成了我们在运行KJ2008软件的时候出现,数据库连接正常,但报表打印出现“SQL 2009-4-11数据无效”。
此时,首先应该对kj2006数据库进行手动收缩。
收缩不成功才考虑分离和附加。
一、收缩数据库1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库(kj2006)3、点击鼠标右键“所有任务》收缩数据库”,出现如下窗口4、点击“文件”,出现如下窗口选择:kj2006_log(日记文件),然后单独对日记文件进行收缩。
点:确定。
即完成对日记文件的收缩。
然后查看日记文件是否缩小。
SQL Server 2000允许分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。
分离数据库将从SQL Server 删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。
然后这些数据和事务日志文件可以用来将数据库附加到任何SQL Server 实例上,这使数据库的使用状态与它分离时的状态完全相同。
数据库分离和附加其实很简单,您即使是初次接触数据库,做起来也很容易。
一、分离数据库1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库3、点击鼠标右键“所有任务》分离数据库”,出现如下窗口4、点击确定,该选定的数据库就被分离(分离后的数据库和事务日志文件路径就是它们原先所在的路径)。
应注意,只有“使用本数据库的连接”数为0时,该数据库才能分离。
所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。
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数据库不断自动产生错误的日志修复办法
问题描述:1、数据库的C盘路径下的数据库LOG文件夹里不断自动产生错误的日志文件(errorlog),在十分钟时间内就可以把C盘20G刷满,导致C盘空间不足,数据库服务无法正常访问;处理办法:1、在数据库中用dbcc checkdb命令检查数据库可以发现数据库有xxx个表报一致性错误,如图:截取部分输出如下:mamdb34的DBCC 结果。
Service Broker 消息9675,状态1: 已分析的消息类型: 14。
Service Broker 消息9676,状态1: 已分析的服务约定: 6。
Service Broker 消息9667,状态1: 已分析的服务: 3。
Service Broker 消息9668,状态1: 已分析的服务队列: 3。
Service Broker 消息9669,状态1: 已分析的会话端点: 0。
Service Broker 消息9674,状态1: 已分析的会话组: 0。
Service Broker 消息9670,状态1: 已分析的远程服务绑定: 0。
sys.sysobjvalues的DBCC 结果。
消息8929,级别16,状态1,第1 行对象ID 60,索引ID 1,分区ID 281474980642816,分配单元ID 281474980642816 (类型为In-row data): 在ID 为1786249216 的行外数据中发现错误,该数据由RID = (1:2754:0) 标识的data 记录所有消息8961,级别16,状态2,第1 行表错误: 对象ID 60,索引ID 1,分区ID 281474980642816,分配单元ID 71776119065149440 (类型为LOB data)。
位于页(1:47613),槽0,文本ID 1786249216 的行外数据节点与它在页(1:2754),槽0 的引用不匹配。
消息8965,级别16,状态1,第1 行表错误: 对象ID 60,索引ID 1,分区ID 281474980642816,分配单元ID 71776119065149440 (类型为LOB data)。
SQL解决数据库日志文件已满的问题
删除数据库日志文件 附加数据库时,出现找不到日志字样,删除数据库日志文件 点击保存,成功!
Hale Waihona Puke 数据库属性选项恢复模式由完成切换成简单在收缩完成之后记得改回完整模式
SQL解 决 数 据 库 日 志 文 件 已 满 的 问 题
出现数据库操作失败,查找原因,发现数据库日志已满:
解决此问题有两种方法: 1、压缩日志文件 1.数据库->属性->选项-恢复模式->由完成切换成简单(在收缩完成之后记得改回完整模式) 2.数据库->任务->收缩-文件->文件类型->日志->将文件收缩到
解决SQL数据库日志已满的问题
解决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 中的一个文件附加到当前服务器。
a.分离EXEC sp_detach_db @dbname = 'pubs'b.删除日志文件c.再附加EXEC sp_attach_single_file_db @dbname = 'pubs',@physname = 'c:\ProgramFiles\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)特别注意:请按步骤进行,未进行前面的步骤,请不要做后面的步骤,否则可能损坏你的数据库。
SQL数据库日记文件满造成数据库不能保存数据的处理方法
SQL Server2000数据库收缩、分离与附加当日记文件储存满以后,会出现SQL数据库数据无法保存现象。
这就造成了我们在运行KJ2008软件的时候出现,数据库连接正常,但报表打印出现“SQL 2009-4-11数据无效”。
此时,首先应该对kj2006数据库进行手动收缩。
收缩不成功才考虑分离和附加。
一、收缩数据库1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库(kj2006)3、点击鼠标右键“所有任务》收缩数据库”,出现如下窗口4、点击“文件”,出现如下窗口选择:kj2006_log(日记文件),然后单独对日记文件进行收缩。
点:确定。
即完成对日记文件的收缩。
然后查看日记文件是否缩小。
SQL Server 2000允许分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。
分离数据库将从SQL Server 删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。
然后这些数据和事务日志文件可以用来将数据库附加到任何SQL Server 实例上,这使数据库的使用状态与它分离时的状态完全相同。
数据库分离和附加其实很简单,您即使是初次接触数据库,做起来也很容易。
一、分离数据库1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库3、点击鼠标右键“所有任务》分离数据库”,出现如下窗口4、点击确定,该选定的数据库就被分离(分离后的数据库和事务日志文件路径就是它们原先所在的路径)。
应注意,只有“使用本数据库的连接”数为0时,该数据库才能分离。
所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。
sqlserver日志文件太大解决方法
sqlserver⽇志⽂件太⼤解决⽅法当SQL数据库⽇志⽂件已满,或者⽇志很⼤,就需要压缩⽇志及数据库⽂件: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.分离 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 FilesMicrosoft SQL ServerMSSQLDatapubs.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步如果⽇志达到上限,则以后的数据库处理会失败,在清理⽇志后才能恢复.SQL Server 如何设置数据库的默认初始⼤⼩和⾃动增长⼤⼩sqlserver2008⽇志已满解决⽅法,SQL Server 如何设置数据库的默认初始⼤⼩和⾃动增长⼤⼩1、数据库右键属性-选项-恢复模式-下拉选择简单-最后点击确定2、右键数据库-任务-收缩-⽂件类型-下拉选择⽇志-收缩操作-在释放未使⽤…(默认收缩到1MB)-最后点击确定3、最后别忘了回到第⼀步骤把恢复模式改为完整!我们在SQL Server中新建数据库的时候,可以选择数据库⽂件及⽇志⽂件的初始⼤⼩、⾃动增长⼤⼩和最⼤⼤⼩,如下图所⽰:可以通过设置更改数据库初始⼤⼩、⾃动增长⼤⼩和最⼤⼤⼩:但是其实在SQL Server中新建数据库时,数据库的初始⼤⼩、⾃动增长⼤⼩和最⼤⼤⼩的默认值,是可以在model这个系统数据库上预设的。
归档日志满处理过程
ASMCMD> cd archivelog
ASMCMD> ls
2011_10_05/
2011_10_06/
ASMCMD> cd 2011_10_05
ASMCMD> ls -lrt----该命令按时间升序显示文件
ASMCMD>rm filename --filename为要删除的文件名
SQL> alter system setdb_recovery_file_dest_size=4G;
系统已更改。
SQL> show parameter db_recovery_file_dest_size
NAMETYPEVALUE
------------------------------------ ----------- ------------------------------
当数据库运行在归档模式时,如果没有做好备份策略或归档文件和备份文件放到同一个逻辑区,则偶尔会遇到归档日志满导致系统挂起事故。在这样情况下,重启数据库不仅没有用而且将问题更复杂化(记得重启后在HA模式下的共享存储也不见了,进行了手工mount后进行手工删除部分归档日志)。
根据实际环境有不同处理方法,如下是比较通用的处理过程:
2、查看用于归档日志或备份的磁盘空间
在Linux或Unix下可以通过查看空间使用情况:$df -h
如果使用Oracle ASM存储技术,则通过如下命令查看:
$export ORACLE_SID=+ASM1
$asmcmd
ASMCMD> lsdg
3、删除归档日志物理文件,归档日志一般都是位于归档目录下
SqlServer数据库提示“tempdb”的日志已满问题解决方案
SqlServer数据库提⽰“tempdb”的⽇志已满问题解决⽅案执⾏sql 语句,中间没有⽤到临时表提⽰服务器: 消息 9002,级别 17,状态 2,⾏ 1数据库 'tempdb' 的⽇志已满。
请备份该数据库的事务⽇志以释放⼀些⽇志空间。
⽹上找了下解决⽅案,⼤体是扩⼤临时库的⽇志⽂件的⼤⼩解决的解决过程:查看了下数据库的属性,是⾃动增长,不指定⽂件⼤⼩上限。
在⽹上Google了很久,试了些⽅法都不⾏;数据库所在磁盘还有很⼤的可⽤空间,试着下重药了。
直接把tempdb的数据⽂件和⽇志⽂件的⼤⼩改为3000M,问题解决。
记录⼀下清空⽇志的命令:DUMP TRANSACTION dbname WITH NO_LOG截断事务⽇志命令:BACKUP LOG dbname WITH NO_LOG收缩⽇志操作:右键点数据库-属性-所有任务-收缩数据库-⽂件-选择⽂件-确定。
虽然⽤清空⽇志命令清空了tempdb的⽇志,但是不能解决问题。
于是扩⼤tempdb的数据⽂件和⽇志⽂件的⼤⼩,ALTER DATABASE [tempdb] MODIFY FILE (NAME = N'templog', MAXSIZE = UNLIMITED)ALTER DATABASE [tempdb] MODIFY FILE (NAME = N'templog', FILEGROWTH = 10%)ALTER DATABASE [tempdb] MODIFY FILE (NAME = N'templog ', SIZE = 1000)ALTER DATABASE [tempdb] MODIFY FILE (NAME = N'tempdev ', SIZE = 1000)。
数据库“xxx”的事务日志已满,原因为“LOG_BACKUP”
数据库“xxx”的事务⽇志已满,原因为“LOG_BACKUP”问题描述:数据库的事务⽇志已满,起因为"LOG_BACKUP"。
问题截图:解决⽅法:1).选择数据库–属性—选项—恢复模式–选择简单。
2).收缩数据库后,再调回完整。
1 USE[master]2 GO3 ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT4 GO5 ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE --简单模式6 GO7 USE 要清理的数据库名称8 GO9 DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY) --设置压缩后的⽇志⼤⼩为2M,可以⾃⾏指定10 GO11 USE[master]12 GO13 ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT14 GO15 ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL --还原为完全模式16 GO数据库XXX的事务⽇志已满,起因为“LOG_BACKUP”客户的管理系统数据库⽤的是SQL2012,看来是需要压缩⼀下数据库了,但是当我压缩数据库的时候竟然报错了,应该是⽇志太⼤了。
那么,解决办法就有了!第⼀步,把数据库的恢复模式设置为“简单”,具体操作:右键你的数据库,选择“属性”,然后在“选项”⾥⾯把“恢复模式”设置为“简单”,然后“确定”。
第⼆步,收缩数据库,具体操作:右键你的数据库,选择“任务”——“收缩”——“数据库”,在弹出来的⾯板⾥直接点“确定”即可。
第三步,把数据库的恢复模式设置为“完整”,具体操作:右键你的数据库,选择“属性”,然后在“选项”⾥⾯把“恢复模式”设置为“完整”,然后“确定”。
sybase数据库tempdb日志滿了
sybase数据库tempdb日志滿了开发数据库服务器遇到这样的一个问题,使用了一段时间之的后,突然之间数据库就用不了了,现象是新连接连接不上,已经连接的执行sql时,报出tempdb日志满了,无法进行操作的错误,而且控制台无法连接上服务器,所有操作都无法正常进行。
经过上网查询,得知是tempdb日志满了,缺省情况下,tempdb数据库是放置在master设备上,容量为2M,而临时数据库是活动最为平凡的数据库常常被用来排序、创建临时表、重格式化等操作,所以tempdb的优化应该受到特别的关注。
安装Sybase的时候就应该把tempdb的空间扩大,并且最好新建一个表空间给它专门用。
正常的时候可以用sp_helpdb tempdb命令查看tempdb,可以看到tempdb占用空间的情况。
如果日志满了,可以执行dump tran tempdb with truncate_only或者dump tran tempdb with no_log来清除日志,但是现在根本无法执行该语句,因为tempdb已经满了,根本没有空间来执行该语句,这该怎么办,好像进入了一个死循环里,日志满了要清除,但因为满了又无法清除,看来只能先扩容了,现在已经没有一个空闲的表空间了,控制台根本无法连接上数据库,只能用语句来新建一个表空间,下面是新建表空间的语句:disk initname="tempdblog",physname="c:/sybasedb/tempdblog.dat",vdevno=11,size= 409600go新建好表空间后,将该空间分配给tempdb存放日志用如下命令:alter database tempdb log on tempdblog=800如果要分配数据空间,用如下命令:alter database tempdb on tempdbdata=1024分配好后,就可以执行之前的清除日志的语句:dump tran tempdb with truncate_only或者 dump tran tempdb with no_log如果不想占用master的空间,可以执行如下语句将master上为tempdb的空间删除:sp_dropsegment "default",tempdb,mastersp_dropsegment logsegment,tempdb,master还可以将临时数据库与高速缓冲进行绑定tempdb数据库是活动最为平凡的数据库,常常被用来排序、创建临时表、重格式化等操作,它会频繁地使用数据缓存,所以应为临时数据库创建高速缓存,从而可以使其常驻内存并有助于分散I/O,根据服务器的实际情况,我们为tempdb数据库创建100M的高速缓存,实现方法如下:1、创建命名高速缓存sp_cacheconfig “tempdb_cache”,”100m”,”mixed”go2、重新启动server3、捆绑临时数据库到tempdb_cache高速缓存sp_bindcache “tempdb_cache”, tempdbgo以上操作已在系统中实现,硬件环境为IBMX系列服务器,操作系统为sco unix 5.0.6,系统优化后,性能得到较为明显的提高。
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。
归档日志空间满
归档⽇志空间满和 ORA-03113 解决今天有⼀个⽤户因为归档⽇志空间满,造成数据库宕机。
在alert⾥⾯会看到类似下⾯的内容:1. ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 4294967296 字节) 已使⽤ 100.00%, 尚有 0 字节可⽤。
2. ************************************************************************3. You have following choices to free up space from recovery area:4. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,5. then consider changing RMAN ARCHIVELOG DELETION POLICY.6. Back up files to tertiary device such as tape using RMAN7. BACKUP RECOVERY AREA command.8. Add disk space and increase db_recovery_file_dest_size parameter to9. reflect the new space.10. Delete unnecessary files using RMAN DELETE command. If an operating11. system command was used to delete files, then use RMAN CROSSCHECK and12. DELETE EXPIRED commands这时,如果只是把快速恢复区的归档⽇志删除,启动数据库会报错ORA-03113⽅法之⼀,按照上⾯第8条的提⽰,增加db_recovery_file_dest_size需要把数据库启动到mount状态sql>startup mountsql>system set db_recovery_file_dest_size=8192m题外话:出现这个问题的原因是开启归档⽇志,⽽快速恢复区(Flash Recovery Area)默认安装的时候⼀般只有4096M,所以很容易就满,按照Oracle的建议,⼀般这个区域的⼤⼩是数据库⽂件⼤⼩总和的两倍,所以建议⼤⼩都设置⼤⼀些。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解决SQL数据库日志已满的问题
1、右键数据库→属性→选项→故障还原模型→设为简单→确定;
2、右键数据库→所有任务→收缩数据库→确定;
3、右键数据库→属性→选项→故障还原模型→设为大容量日志记录→确定。
二、复杂方法
1、清空日志
DUMP TRANSACTION库名WITH NO_LOG
2、截断事务日志
BACKUP LOG数据库名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 = '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)
特别注意:
请按步骤进行,未进行前面的步骤,请不要做后面的步骤,否则可能损坏你的数据库。
一般不建议做第4、6两步,第4步不安全,有可能损坏数据库或丢失数据,第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复。
日志文件满而造成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 时才能进行。
注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。
详解快速清除SQLServer日志的两种方.. Sqlserver 优化的方法删除无效的SQL SERVER组的几种方法sql server
添加数据库的方法sql server平台用存储过程进行分页.. SQL SERVER的数据类型获取SQL Server元数据的几种方法
SQL Server的有效安装ASP中server的方法SQL Server导出导入数据方法SQL Server各种日期计算方法之二
SQL Server的备份与还原。